XAMPP - Fast installation of Apache, PHP, MySQL under any platform

Posted by admin | Uncategorized | Saturday 6 June 2009 5:04 am

If you what a fast solution for installing Apache with php and mysql XAMPP is one of the best choices. You can install it under windows, linux and even MAC OS X, with small effort for fast use.

This is update often using the latest stable versions of each service in the package.

Easy to setup every service, a has a nice control panel for starting and stopping the services.

For example XAMPP 1.7.1 has the following versions:

  • Apache HTTPD 2.2.11 + Openssl 0.9.8i
  • MySQL 5.1.33
  • PHP 5.2.9
  • phpMyAdmin 3.1.3.1
  • XAMPP CLI Bundle 1.3
  • FileZilla FTP Server 0.9.31
  • Mercury Mail Transport System 4.62

Here are some screenshots:

[nggallery id=13]

AS3/amphp - Singleton Remote Data Request Manager

Posted by admin | Action Script | Wednesday 3 June 2009 3:37 pm

This is a remote connection data request class used for requesting data in Flex (AS3), using static function calls to a amfphp gateway.

This is free and you can use it the way you want. So I won’t provide a example for using; this will be your work for deserving it.

Put this in the package you want (this is currently in wm.managers). ad name the file RemoteDatamanager.as

Don’t forget to set the server side php session id so you have the same sesion data when you’re doing file uploads for example.


?View Code ACTIONSCRIPT
package wm.managers
{
	import mx.collections.ArrayCollection;
 
	import wm.objects.IProcess;
 
	public class RemoteDataManager
	{
		private static var _instance:SingletonRemoteDataManager; 
 
		public function RemoteDataManager()
		{
			throw(new Error('RemoteDataManager: You can\'t instatiate a singleton class'));
		}
 
		private static function instance():* {
			if (_instance) {
			} else {
				_instance = new SingletonRemoteDataManager();
			}
			return _instance;
		} 
 
		// PUBLIC INTERFACE FUCNTIONS
 
		public static function requestAmfphp(request:String , data:*, callback:Function, listeners:String = null, process:IProcess = null, service:String = ''):void {
			instance().requestAmfphp(request,data,callback, listeners, process,service);
		}
 
		public static function setSessionId(sessionid:String):void {
			instance().setSessionId(sessionid);
		}
 
		public static function getSessionId():String {
			return instance().getSessionId();
		}
 
		public static function dispatchListener(listener:String):void {
			instance().dispatchListener(listener);
		}
 
		public static  function set gatewayRequestPath(value:String):void {
			instance().gatewayRequestPath = value;
		}
 
	}
}
 
import mx.collections.ArrayCollection;
import flash.utils.Dictionary;
import wm.managers.LoggingManager;
import wm.utils.RemotingConnection;
import flash.net.Responder;
import flash.profiler.showRedrawRegions;
import mx.managers.CursorManager;
import mx.controls.Alert;
import flash.events.NetStatusEvent;
import wm.objects.IProcess;
import wm.structures.ProcessMessage;
import mx.core.Application;
import wm.managers.RemoteDataManager;
 
internal class RemoteAmfRequest {
 
	private var _request:String;
	private var _data:*;
	private var _callback:Function;
	private var _service:String;
	private var _remoteUrl:String;
	private var _process:IProcess = null;
 
	public function RemoteAmfRequest(request:String , data:*, callback:Function, service:String, process:IProcess, remoteConnectionUrl:String) {
		_request = request;
		_callback = callback;
		_service = service;
		_remoteUrl = remoteConnectionUrl;
		_data = data;
		_process = process;
 
		executeRequest()
	}
 
	public function get request():String 	{ return _request; }
	public function get data():* 			{ return _data; }
	public function get callback():Function { return _callback; }
	public function get service():String 	{ return _service; }
	public function get remoteUrl():String 	{ return _remoteUrl; }
	public function get process():IProcess	{ return _process; }
 
	private function setBusyProcess():void {
		if (_process)
			_process.sendMessage(new ProcessMessage(ProcessMessage.MODAL_LOCK, {mode:true}));
	}
 
	private function removeBusyProcess():void {
		if (_process)
			_process.sendMessage(new ProcessMessage(ProcessMessage.MODAL_LOCK, {mode:false}));
	}
 
	public function executeRequest():void {
		var gateway:RemotingConnection = new RemotingConnection( _remoteUrl );
		gateway.addEventListener(NetStatusEvent.NET_STATUS,net_status_callback)
		gateway.call( _service, new Responder(onResult, onFault),_request, _data);
		CursorManager.setBusyCursor();
		setBusyProcess()
	}
 
	private function net_status_callback(ev:NetStatusEvent):void {
		Alert.show("Net status error has occoured:")
		CursorManager.removeBusyCursor();
		removeBusyProcess();
	}
 
	private function onResult(output:*):void {
		removeBusyProcess();
		output['errors']   = false;
		output['messages'] = false;
 
		// Searching for alerts to be made from request callback output
		if (output['alerts']) {
			var item:*;
 
			if (output['alerts']['messages']) {
				for each (item in output['alerts']['messages']) {
					Alert.show(item.message,item.title);
					output['messages'] = true;
				}
			}
			if (output['alerts']['errors']) {
				for each (item in output['alerts']['errors']) {
					output['errors'] = true;
					Alert.show(item.message,item.title);
				}
			}
		}
 
		if (output['__sessid']) {
			RemoteDataManager.setSessionId(output['__sessid']);
		}
 
		if (this['_callback'])
			_callback(output);
 
		CursorManager.removeBusyCursor();
	}
 
	private function onFault( fault:String ):void {
		LoggingManager.addLog("RemoteAmfRequest","Amf fault: '" + fault + "'. Details(Request: `"+_request+"`, Service: `"+_service+"`);");
		CursorManager.removeBusyCursor();
	}
 
}
 
internal class SingletonRemoteDataManager {
 
	private var _requestStack:Dictionary = new Dictionary();
 
	private var _listenersStack:ArrayCollection = new ArrayCollection();
 
	private var remoteConnectionUrl:String = "";
 
	private var defaultService:String = "system.request";
 
	private var sessionId:String = '';
 
	/**
	 */
 
	public function requestAmfphp(request:String , data:*, callback:Function = null, listeners:String = null, process:IProcess = null, service:String = ''):void {
		// Send also the session id
		//data.__sessid = sessionId;
 
		var _remoteAmfRequest:RemoteAmfRequest = new RemoteAmfRequest(
			request,
			data,
			callback,
			service.length ? service : defaultService,
			process,
			remoteConnectionUrl
		);
 
		if (listeners)
		if (listeners.length) {
 
			// HERE I SEARCH IF A SIMILAR LISTENER FOR AN IDENTICALL REQUEST WAS ALREADY ADDDED TO STACK
 
			for each (var item:* in _listenersStack) {
				if (
					(item.listenersString==listeners) &&
					(item.reference.callback == callback) &&
					(item.reference.request == request)
				) {
					_listenersStack.removeItemAt(_listenersStack.getItemIndex(item));
				}
			}
			_listenersStack.addItem({listeners:listeners.split(','), listenersString:listeners, reference:_remoteAmfRequest});
		}
	}
 
	public function set gatewayRequestPath(value:String):void {
		remoteConnectionUrl = value;
	}
 
	public function setSessionId(sessionid:String):void {
		this.sessionId  = sessionid;
	}
 
	public function getSessionId():String {
		return this.sessionId;
	}
 
	public function dispatchListener(listener:String):void {
		for each (var item:* in _listenersStack) {
			for each (var listenerString:String in item.listeners) {
				if (listenerString == listener) {
					item.reference.executeRequest();
					break;
				}
			}
		}
 
	}
 
}