Skip to main content

Posts

Showing posts from 2012

PHP: A webservice to query MySQL database via JSON

Here is a very basic webservice to query mysql database via GET or POST methods. It will return the result in json format. <?php /** * @filename service.php * @author Abhishek Kumar **/ include 'config.php'; function db_query($iQuery, $iReturn) { $output = array(); if($connection = mysql_connect(DB_HOST, DB_USER, DB_PASS)) if($database = mysql_select_db(DB_SCHEMA)) if($result = mysql_query($iQuery)) { if($iReturn) { while ($data[] = mysql_fetch_array($result, MYSQL_ASSOC)); mysql_free_result($result); $output['success'] = $data; } else $output['success'] = $result; mysql_close($connection); } else $output['failure'] = mysql_error(); else $output['failure'] = mysql_error(); else $output['failure'] = mysql_error(); return $output; } $query = (!isset($_REQUEST['query']))? NULL : $_REQUEST['query']; $type = (!isset($_REQUEST['type&#

How to enable/disable directory browsing on Red5?

To enable/disable directory browsing on Red5, follow the steps given below: Open the folder where Red5 is installed. Go inside the conf folder. Open the web.xml file. Search for the key string  listings in the xml. As show below, Edit it's value as:  true - to enable directory listings false - to disable directory listings Save the xml file. Restart the Red5 server. Try to access the path like http://localhost:5080/live/ , if you get  HTTP Status 404 then directory listings is disabled otherwise it is enabled. After verification, you're done!

How to setup OpenMeetings?

Recently, I got a requirement for which I have to install an Apache OpenMeetings on the Windows 7 server. So here I am sharing some of my experience that could be beneficial for readers who may use it as notes or guidelines. Apache OpenMeetings  is a web-based application that is developed using OpenLaszlo  and Red5 Media Server . Here,  OpenLaszlo  is alternate to flex-sdk that takes xml files as input, compile them and return swf as output; while  Red5 Media Server  is alternate to Flash Media Server or Adobe Media Server . That means, every bit of this product is open-source. Now to start with, you need to download  Apache OpenMeetings  from here . According to the  Latest Official Release ,  Apache OpenMeetings Incubating 2.0 comes integrated with Red5. So you won't have to download it separately. But they're saying that future release of OpenMeetings will be independent of Red5. Which means user would get the flexibility to use OpenMeetings with any Red5 versio

Allow full access to a local swf file

To allow full access to a local swf file, you need to follow these steps: Right click on flash player A vertical menu will appear Click on Global settings... A Flash Player Settings Manager will popup Go to Advanced tab Scroll down to Developer Tools section Click on Trusted Location Settings... button A Trusted Location Settings will popup Click on Add... button An Add Site will popup Click on Add Folder... button A Browse For Folder appears Select the required Drive/Folder Click on Ok button Browse For Folder disappears Click on Confirm button Add Site will disappear Click on Close button Trusted Location Settings will disappear Close the Flash Player Settings Manager popup

App: Vcam - video recorder cum player

Here is a video recorder cum player, i.e., named as vcam that I have developed for one of my client. It can be controlled either internally via provided buttons or externally via javascript. Currently it is showcased as internally controlled. So if anybody required similar solution, please drop me a comment/email. To get the recorded video file link, please click on the Publish button after recording. Note: Since the recorded videos didn't got saved for any useful purpose, so it will be deleted automatically after 2 hours from the time of recording.

Openmeetings Widget Wordpress Plugin

One of my client asked me to create a Wordpress plugin, so the first thing I did was to search for any existing plugin on which I can work on. Luckily I found one. It was developed by Shuki Vaknin. You can visit his plugin at:  http://wordpress.org/extend/plugins/openmeetings-integration-plugin-widget/ But I had little different requirement. So I modified the Shuki Vaknin's plugin. The modification is that every session has a unique username. I choose guest as default name while adding a timestamp along with guest keyword like guest34578689 . Download Link:  openmeetings-integration-plugin-widget.zip

App: Flash to HTML live communication without using Javascript

This is a demo in which by using flash we can create a dynamic text web-page. You're going to see it's application in my future blogs. We can create flash applications in which the swf will take care of calculations, etc. and the webpage text would get updated from inside. Demo: This text will get re-written over here by using  id="fl2htmltop"  and clicking on the provided button. Similarly, this text will also get re-written by using  id="fl2htmlbottom". Note: <param name="allowscriptaccess" value="always" /> <div id="fl2htmltop">Sample text to re-written over here.</div> <div id="fl2htmlbottom">Sample text to re-written over here.</div>

App: Number Base Converter

This program is a number base converter. It's working is described below: Number (in base a )  à  Change base from base a to b   à   Number (in base b ) or N a   à  Change base  à   N b where, N a = Number (in base a ) N b = Number (in base b ) Enter the input Number & it's Base and enter the ouput Number & it's Base. Then press convert button.

App: Net Connection Checker

I have developed this net connection checker utility tool to check the net connection at real-time. It is of great help while developing or testing FMS or Red5 based application. The user is only required to put the URL of that media server. Note :  FMS stands for Adobe's Flash Media Server RED5 is a name of an open source media server

Android: How to install Adobe AIR on Android emulator?

To install Adobe AIR run-time on Android emulator, follow this format for creating the batch file: Format: $ [drive-name]: $ cd "[path-to-android-sdk]\android-sdk-windows\platform-tools" $ adb -e install -r "[path-to-AIR-runtime-apk-file]" Sample for Adobe Flash CS5.5 : $ d: $ cd "D:\Programs\android-sdk_r15-windows\android-sdk-windows\platform-tools" $ adb -e install -r "C:\Program Files (x86)\Adobe\Adobe Flash CS5.5\AIR2.6\runtimes\air\android\emulator\Runtime.apk" Sample for Adobe Flash Builder 4.5 : $ d: $ cd "D:\Programs\android-sdk_r15-windows\android-sdk-windows\platform-tools" $ adb -e install -r "C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.5\sdks\4.5.0\runtimes\air\android\emulator\Runtime.apk" Note : The system should have Adobe Flash CS5.5 installed prior to running this batch file.

Android: How to install application on Emulator via command-line?

To install an Android application file (*.apk) on Emulator, follow these steps: Step-1 : Create a blank batch file. Step-2 : Open the file in editor. Step-3 : Copy the format: $ [drive-name]: $ cd "[actual-path-to-android-sdk-folder]\android-sdk-windows\platform-tools" $ adb -e install -r "[actual-path-to-apk-file]" Step-4 : Paste it in the file. Step-5 : Replace the instruction-text inside square-bracket with the actual paths. Step-6 : Verify it, if it looks similar to the sample given below: $ d: $ cd "D:\Programs\android-sdk_r15-windows\android-sdk-windows\platform-tools" $ adb -e install -r "D:\Workshop\Flash\ANDROID\test1\test1.apk" Step-7 : Save the file. Now double-click the batch file to install the app in android emulator. Note : This method can be used while development when the developer need to install the *.apk file again and again.

Android: How to start Emulator from command-line?

To create the batch file to open the emulator via command-line, follow the steps given below: Step-1 : Create a blank batch file. Step-2 : Copy this format: $ [drive-name]: $ cd [path-to-android-sdk]\android-sdk-windows\tools $ emulator -avd [android-emulator-name] Step-3 : Paste it in the batch file. Step-4 : Edit the instruction-text inside square-bracket accordingly. Step-5 : Verify the modified text, if it looks similar to the one given below: $ d: $ cd D:\Programs\android-sdk_r15-windows\android-sdk-windows\tools $ emulator -avd AndroidSimulator Step-6 : Save the file. Now the batch file is ready to be used. Just double-click on the batch-file to run the emulator.

AS3: Custom Tab-bar Controller

Flash movieclip architecture: <movieclip name="tab_mc"> <frameset> <frame name="normal"> <textfield name="caption" framespan="4"></textfield> <graphics color="#333333"></graphics> </frame> <frame name="over"> <graphics color="#666666"></graphics> </frame> <frame name="down"> <graphics color="#999999"></graphics> </frame> <frame name="disabled"> <graphics color="#333333" alpha="0.7"></graphics> </frame> </frameset> </movieclip> <movieclip name="tabbar_mc"> <frameset> <frame> <movieclip name="tab1" instanceof="{tab_mc}"></movieclip> <movieclip name="tab2" instanceof="{tab_mc}"></movieclip> <m

AS3: Sliding Toggle Switch like iPhone

The movieclip format would be like this: <movieclip name="controller_mc" width="200"> <frameset> <frame name="left"> <movieclip name="slider_mc" x="0" width="100"></movieclip> <graphics framespan="2"> <textfield name="caption1">ON</textfield> <textfield name="caption2">OFF</textfield> </graphics> </frame> <frame name="right"> <movieclip name="slider_mc" x="100" width="100"></movieclip> </frame> </frameset> </movieclip> The source code of the class is given below: package engine.ui { import flash.display.MovieClip; import flash.events.MouseEvent; /** * ... * @author Abhishek Kumar */ public class CToggleSwitch { private var Container:MovieClip; private var proceed:Function; private var toggle:

AS3: Grid Algorithms

Algorithm-1 Is is using horizontal and vertical lines to create grid. public function main(maxRows:int, maxColumns:int):void { var containerWidth:Number = Container.width - 1; var containerHeight:Number = Container.height - 1; var cellWidth:Number = containerWidth / maxRows; var cellHeight:Number = containerHeight / maxColumns; var sprite:Sprite = drawGrid(maxRows, maxColumns, cellWidth, cellHeight, containerWidth, containerHeight); sprite.name = 'grid'; Container.addChild(sprite); } public function destroy():void { Container.removeChild(Container.getChildByName('grid')); } private function drawGrid(rowCount:Number, colCount:Number, rowGap:Number, colGap:Number, rowLen:Number, colLen:Number):Sprite { var sprite:Sprite = new Sprite(); var position:Number; var shapeRow:Shape = new Shape(); for (var i:int = 0; i <= rowCount; i++) { position = rowGap * i; shapeRow = drawLine(position, 0, position, colLen); sprite.addChild(shapeRow);

Ways of representing Flash Movieclip architecture as pseudo-code

Way-1: JSON Here is a representation of a Movieclip architecture in JSON format. { movieclip: { name: 'controller_mc', data: { frame: [ { name: 'normal', data: { textfield: { name: 'caption', framespan: '4' }, graphics: { color: '#333333' } } }, { name: 'over', data: { graphics: { color: '#666666' } } }, { name: 'down', data: { graphics: { color: '#999999' } } }, { name: 'disabled', data: { graphics: { color: '#333333', alpha: '0.7' } } } ] } } } The same pseu

AS3: Custom Button Controller - 2

Here is the pseudo code for the flash application architecture of custom-button movieclip. <movieclip name="controller_mc"> <frameset> <frame name="normal"> <textfield name="caption" framespan="4"></textfield> <graphics color="#333333"></graphics> </frame> <frame name="over"> <graphics color="#666666"></graphics> </frame> <frame name="down"> <graphics color="#999999"></graphics> </frame> <frame name="disabled"> <graphics color="#333333" alpha="0.7"></graphics> </frame> </frameset> </movieclip> The controller class of the custom button. package engine.ui { import flash.display.MovieClip; import flash.events.MouseEvent; /** * ... * @author Abhishek Kumar */ public class CButton { p

Software: Compiler Agent

The Compiler Agent is a GUI based desktop application to work on top of command-line. It can speed-up your command-line repetitive work, like compiling a program again and again. To use this application, user can set a template for command-line parameters. Then browse & select files/folders to insert the path in the template. Download Link:  CompilerAgent_v3.3.zip The screen-shots of the application are given below:

Mobilesite: Thomas H. Heist Insurance Agency

Let me share my experience of creating a mobile-site using using jQuery Mobile for one of my client heistinsurance.com . They already have the website for desktops. It is based on WordPress . Now they want a mobile-site for the same. And they choose to use the same database for the form submission, so that there will be a single point of reference. Though it was a bit tricky but somehow I had successfully completed the project. Here is the snapshot. Link:  http://heistinsurance.com/m/ Since I was using jquery-mobile for mobilesite development but the main website was based on WordPress  So it became very difficult to merge these technologies & platforms. The jquery-mobile is a JavaScript based client-side framework while WordPress is php based server-side framework. So the major challenge I had faced was to merge these technologies. One way is to write a script that can insert the submitted form-data directly into the database. But it is not that easy in WordPress

AS3: Custom Button Controller

Here is the pseudo code for the flash application architecture of custom-button movieclip. <movieclip name="controller_mc"> <frameset> <frame name="normal"> <textfield name="caption" framespan="4"></textfield> <graphics color="#333333"></graphics> </frame> <frame name="over"> <graphics color="#666666"></graphics> </frame> <frame name="down"> <graphics color="#999999"></graphics> </frame> <frame name="disabled"> <graphics color="#333333" alpha="0.7"></graphics> </frame> </frameset> </movieclip> The controller class of the custom button. package com.engine { import flash.display.MovieClip; import flash.events.MouseEvent; /** * @file CButton.as * @author Abhishek Kumar */ public class

AS3: Custom Dropdown

Here is the code for the custom dropdown component. /** * @file Sample.fla * @author Abhishek Kumar */ import com.engine.CDropdown; import flash.display.MovieClip; var cb:CDropdown = new CDropdown(dropdown_mc, onclick); cb.attachListeners(); function onclick(mc:MovieClip):void { trace(mc.name); } The pseudo code of application (Sample.fla) design architecture. { movieclip: 'dropdown_mc' { movieclip: 'controller' { textfield: 'caption', frames: [up, over, down] } movieclip: 'dropdown' { movieclip: 'item0' { textfield: 'caption', movieclip: 'selected', frames: [up, over, down] } movieclip: 'item1' { textfield: 'caption', movieclip: 'selected', frames: [up, over, down] } movieclip: 'item2' { textfield: 'caption', movieclip: 'selected', frames: [up, over, down] } movieclip: 'item3&

Blogspot Code Syntax Highlighter

Here is the code to highlight syntax of the code hosted on the blogspot. <script src="http://yandex.st/highlightjs/6.1/highlight.min.js"></script> <link rel="stylesheet" href="http://yandex.st/highlightjs/6.1/styles/default.min.css"> <link rel="stylesheet" href="http://yandex.st/highlightjs/6.1/styles/idea.min.css"> <script> hljs.initHighlightingOnLoad(); </script> <br /> <!-- Here will be the description --> <pre style="border: 1px dashed #CCCCCC; overflow: auto;"><code style="word-wrap: normal;"> <!-- Here will be the source code --> </code></pre>

PHP: Session based RAM

Here is a session based RAM. <? /** * @Class: CContainerManager.class.php * @Author: Abhishek Kumar (c) 2008. **/ class ContainerManager { function __construct() { session_start(); Get(); } function Get() { global $Container; $Container = array(); if (isset($_SESSION['RAM'])) { $Container = unserialize($_SESSION['RAM']); } } function Set() { $_SESSION['RAM'] = serialize($GLOBALS['Container']); } function Clean() { if (isset($_SESSION['RAM'])) { unset($_SESSION['RAM']); unset($GLOBALS['Container']); } } function Add($Associate, $Value) { global $Container; if (!isset($Container[$Associate])) { $Container[$Associate] = $Value; return true; } else { return false; } } function Modify($Associate, $Value) { global $Container; if (isset($Container[$Associate])) { $Container[$Associate] = $Value; return true; } els

AS3: Data Transporter

A data tansporter class. package engine { /** * @file CTransporter.as * @author Abhishek Kumar */ import engine.CCommunicator; import engine.CTemplate; import engine.CQuery; import engine.CUrl; public class CTransporter { private var oCommunicator:Object; private var oTemplate:Object; /* Ex: * private var oTransporter:Object = new CTransporter(); */ public function CTransporter():void { oCommunicator = new CCommunicator(); oTemplate = new CTemplate(); } /* Ex: * oTransporter.deliver('URL01', true, 'QT001', { Username:'admin', Password:'pass' }, this.receiver); */ public function deliver(iWebService:String, iReturn:Boolean, iQueryName:String, iQueryElement:Object, iReceiver:Function):void { oCommunicator.setUrl(CUrl.WebAppRoot + CUrl[iWebService]); oCommunicator.initialize(); oCommunicator.setProceed(iReceiver); var queryString:String = oTemplate.setInTemplate(CQu

AS3: Form Verifier

A form verifier class. package engine { /** * @file CFormVerifier.as * @author Abhishek Kumar */ import mx.controls.Alert; public class CFormVerifier { private var formItems:Array; public function CFormVerifier() { formItems = []; } public function push(itemId:int):void { formItems[itemId] = 1; } public function pop(itemId:int):void { formItems[itemId] = 0; } public function check(filledItems:int):Boolean { for (var i:int = 0, sum:int = 0; i < formItems.length; i++) { sum += formItems[i]; } return ((sum == filledItems) ? true : false); } public function alert():void { Alert.show('Please fill-up all the required fields!', 'Alert'); } } }

AS3: Form Validator

A form validator class package engine { /** * @file CFormValidator.as * @author Abhishek Kumar */ import mx.controls.Alert; public class CFormValidator { private var formItems:Array; public function CFormValidator() { formItems = []; } private function checkFormId(formId:String):void { if (formItems[formId] == null) formItems[formId] = []; } public function push(formId:String, elementId:Number):void { checkFormId(formId); formItems[formId][elementId] = 1; } public function pop(formId:String, elementId:Number):void { checkFormId(formId); formItems[formId][elementId] = 0; } public function check(formId:String, elementId:Number):Boolean { checkFormId(formId); for (var i:Number = 0, sum:Number = 0; i < formItems[formId].length; i++) { sum += formItems[formId][i]; } return ((sum == elementId) ? true : false); } public function alert():void { Alert.show('Please f

AS3: Date-Time Query

A Date-time query methods. package engine { /** * @file CDateTimeQuery.as * @author Abhishek Kumar */ public class CDateTimeQuery { public function CDateTimeQuery() { } public static function isExpired(yyyy:Number, mm:Number, dd:Number):Boolean { var today:Date = new Date(); var expiry:Date = new Date(yyyy, mm - 1, dd); var decision:Boolean = (today > expiry) ? true : false; return (decision); } public static function isValid(year:Number, month:Number, date:Number):Boolean { if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { return ((date >= 1 && date <= 31)?true:false); } else if (month == 4 || month == 6 || month == 9 || month == 11) { return ((date >= 1 && date <= 30)?true:false); } else if (month == 2) { if (year%100 == 0) { return ((year % 400 == 0) ? ((date >= 1 && date <= 29)?true:f

AS3: Data-tube ... an evolved concept

A data-tube concept based class. package engine { /** * @file CDataTube.as * @author Abhishek Kumar */ public class CDataTube { public function CDataTube() { } public function manageItem(iCommand:Boolean, iItem:*, iList:*):Array { if (iList == undefined) { iList = []; iList = addItem(iItem, iList); } else iList = (iCommand)? addItem(iItem, iList) : deleteItem(isPresent(iItem, iList), iList); return iList; } private function addItem(iItem:*, iList:Array):Array { iList.push(iItem); return iList; } private function deleteItem(iIndex:int, iList:Array):Array { for (var j:int = iIndex; j < iList.length; j++) iList[j] = iList[j + 1]; iList.length--; return iList; } private function isPresent(iItem:*, iList:Array):int { for (var i:int = 0; i < iList.length; i++ ) if (iList[i] == iItem) return i; return -1; } } }

AS3: Cryptography Methods

Few cryptography methods. package engine { /** * @file CCryptography.as * @author Abhishek Kumar */ import com.hurlant.util.Hex; import com.hurlant.util.Base64; public class CCryptography { public function CCryptography() { } public static function encrypt(iMsg:String):String { return Hex.fromString(Base64.encode(XOR(iMsg))); } public static function decrypt(iMsg:String):String { return XOR(Base64.decode(Hex.toString(iMsg))); } private static function XOR(source:String):String { var key:String = "HjRUPxRjRUPxRdVDYFdVDFS0HjRUPxRdVDYF6PkFBK3YlXjc"; var result:String = new String(); for (var i:Number = 0; i < source.length; i++) { if (i > (key.length - 1)) { key += key; } result += String.fromCharCode(source.charCodeAt(i) ^ key.charCodeAt(i)); } return result; } } }

AS3: Flex to Web-service Communicator

Here is a flex to web-service communicator. It dispatches a package of data to the server and receives the result in response from the server. package engine { /** * @file CCommunicator.as * @author Abhishek Kumar */ import mx.rpc.http.HTTPService; import com.sephiroth.Serializer; import mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent; import mx.controls.Alert; import engine.CUtility; public class CCommunicator { private var communicationAgent:HTTPService; private var communicationUrl:String; private var communicationProceed:Function; /* Ex: * public var oCommunicator:Object = new CCommunicator(); */ public function CCommunicator():void { //trace('CCommunicator'); } /* Ex: * <mx:HTTPService id="transmittingAgent" url="<url-link>" result="oCommunicator.receiveDataFromServer(event);" fault="oCommunicator.handleCommunicationFault(event);" useProxy="false

PHP: Webpage Publisher

A webpage publishing class. <?php /** * @Class: CPublisher.class.php * @Author: Abhishek Kumar **/ require_once("CTemplate.class.php"); require_once("CFile.class.php"); class CPublisher { private static $oTemplate; public static function initialize() { self::$oTemplate = new CTemplate(); self::$oTemplate->setTemplatePath('asset/template'); } public static function Publish($iContent, $iInclude) { self::initialize(); $Output = self::$oTemplate->ModifyAndDump('Container.dt', array( 'Header'=>self::getHeader($iInclude), 'Content'=>self::$oTemplate->ModifyAndDump('ContainerBody.dt', array( 'Header'=>self::$oTemplate->Dump('Header.st'), 'Content'=>$iContent, 'Footer'=>self::$oTemplate->Dump('Footer.st') ) ), ) ); return $Output; } private static function getHeader($iI

PHP: Image Uploader

Here is an image uploader with re-sizing methods <?php /** * @file ImageUploader.php * @author Abhishek Kumar **/ $tempFile = $_FILES['Filedata']['tmp_name']; $fileName = $_FILES['Filedata']['name']; $fileSize = $_FILES['Filedata']['size']; $timestamp = date("YmdHis"); $new_fileName = "IMG".$timestamp.strtolower(getFileExtension($fileName)); move_uploaded_file($tempFile, "warehouse/" . $new_fileName); echo $new_fileName; function getFileExtension($iFile) { $iExtension = strrpos($iFile, "."); $oExtension = substr($iFile, $iExtension, strlen($iFile)); $oString = strtolower($oExtension); return $oString; } function imageResizer($image) { //$image = "Database/Foto/IMG_001.jpg"; // Name of the source image list($PictureWidth, $PictureHeight) = getimagesize($image); // Get original size of source image $PictureAspectRatio = $PictureWidth/$PictureHeight; $Width = 160;

PHP: Directory Handlers

Directory handling methods. <?php /** * @Class: CDirectory.class.php * @Author: Abhishek Kumar **/ require_once("CTemplate.class.php"); require_once("CFile.class.php"); class CDirectory { private $VoTemplate; private $VoCFile; private $Avoid; public function __construct() { $this->VoTemplate = new CTemplate(); $this->VoCFile = new CFile(); $this->Avoid = array(); $this->Avoid['Directory'] = array(); $this->Avoid['File'] = array(".", ".."); $this->Avoid['Extension'] = array(); } public function Directory($iCommand, $iDir) { switch($iCommand) { case 'CREATE': mkdir($iDir, 0700); $oStatus = true; break; case 'REMOVE': rmdir($iDir); $oStatus = true; break; case 'DELETE': $this->deleteDir($iDir); $oStatus = true; break; default: $oStatus = false; } return $oStatus; } private

PHP: File Utilities Methods

Utility methods for file handling. <?php /** * @Class: CFile.class.php * @Author: Abhishek Kumar **/ class CFile { public function getFileExtension($iFile) { $iExtension = strrpos($iFile, "."); $oExtension = substr($iFile, $iExtension, strlen($iFile)); $oString = strtolower($oExtension); return $oString; } public function getFileName($iFile) { $iExtension = strrpos($iFile, "."); $oFileName = substr($iFile, 0, $iExtension); return $oFileName; } public function getFileExtensionAlt($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } public function getFileNameAlt($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $filename = substr($str,0,$i); return $filename; } public function CreateFile($iFileName) { if (!$handle = fopen($iFileName, 'w+')) { return "Error: Ca

PHP: Template Setter

A template setting class for a webpage. <?php /** * @Class: CTemplate.class.php * @Author: Abhishek Kumar **/ require_once("CFile.class.php"); class CTemplate { private $HandleFile; private $Template; private $TemplatePath; public function __construct() { $this->HandleFile = new CFile(); } public function __destruct() { unset($this->HandleFile); } public function FitIn($iTemplate, $iTemplateArgument) { $this->Template = $iTemplate; $this->Template = $this->setTemplate($iTemplateArgument); return $this->Template; } public function ModifyAndDump($iTemplateName, $iTemplateArgument) { $this->Template = $this->getTemplate($iTemplateName); $this->Template = $this->setTemplate($iTemplateArgument); return $this->Template; } public function Dump($iTemplateName) { $this->Template = $this->getTemplate($iTemplateName); return $this->Template; } public function setTemplatePath($iPath

PHP: Web-service for communicating with MySQL database

Here is a php to mysql communication gateway packaged as a web-service. Gateway.php <?php require_once('Config.php'); require_once('engine/CMySqlManager.class.php'); $VoCMySqlManager = new CMySqlManager(); $VoCMySqlManager->Connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_SCHEMA); $_POST['message'] = (!isset($_POST['message']))? null : $_POST['message']; $_GET['message'] = (!isset($_GET['message']))? null : $_GET['message']; $C2S_message = ($_POST['message'] == null)? $_GET['message'] : $_POST['message']; $S2S_information = unserialize(stripslashes(urldecode($C2S_message))); if(isset($S2S_information->COMMAND) && isset($S2S_information->QUERY)) { $S2C_output = array(); $S2C_output = $VoCMySqlManager->Process($S2S_information->QUERY, $S2S_information->COMMAND); if($S2S_information->COMMAND) array_pop($S2C_output); echo urlencode(serialize($S2C_out

Android: Country's ISD Code

Recently, I got a very short missed call from an unknown foreign number. I traced back the location of that number via ISD code. From this, I got the idea of creating a program to detect this on the go (offline). So I'd created the application in flex for android platform. Below is the snapshot of that application: Here is a link to download the file: Link:  CountryISDCode.apk Download it either directly on your mobile-device or transfer it from computer to the device. Then, install it via Application Installer of the device.

AS3: Swf Communicator

This class could be used for two-way communication in between parent swf and child swf; where the child swf is loaded inside the parent swf. SOURCE CODE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 package { import CEvent ; import flash.events.Event ; import flash.events.IEventDispatcher ; import mx.events.FlexEvent ; import mx.managers.SystemManager ; import spark.components.Application ; /** * @file CSwfCommunicator.as * @author Abhishe