Before you choose to go ahead and spend your hard earned cash on the truly feature unique and latest, greatest Apple Gizmo, the iPhone 4G, you may want to check out the new Telegraph article detailing 10 reasons why Apple’s new toy is not all what it’s cracked up to be.
To cut a long story short, The Telegraph believes customers will get more bang for the buck opting for the latest Blackberry or Android handset. They have even gone so far as saying the iPhone 4G “is not even cool any more”!
Let’s take a peep and see what was uncovered to brand the phone “uncool”:
1) It’s expensive: Buy the top-of-the-range Blackberry or Android handset and you will still pay a lot less than the extortionate prices Apple charge. If the iPhone weren’t made by Apple, networks would have had to start giving it away on £30 a month tariffs years ago.
2) It’s anti-technology: When the iPhone launched it was cutting edge – now as other manufacturers announce, for instance, that you can use their phones as a Mi-Fi (Mobile Wi-Fi) hot spots, Apple says no. Not because of some spurious “user experience” argument, but because of economics. When will they learn that its customers – supply and demand – that should dictate feature availability?
3) No Flash: The iPhone, the phone that promised to put the web into everybody’s pockets, can’t even show you most of it, because it can’t handle Flash graphics. Google Android can, in the latest version (OS 2.2), and it’s going to be available free on a lot of budget tariffs.
4) No multitasking: Tried instant messaging on an iPhone? Oh yes, you have to open the app to see if you’ve got a message. Genius. Apple have announced multitasking in the next release of its fabled mobile operating system, how well it works will be another matter, either way you look at it, anything will be an improvement – but there’ll be no apology for the way it’s treated customers in the past, and no guarantee it won’t behave similarly shoddily in the future.
5) Its battery life is terrible: This isn’t a problem unique to Apple, but look at phones by companies such as HTC – multitasking, better cameras, better screens, all draining their batteries far more – and yet the iPhone, with its undemanding technology, still only offers equal performance.
For the full article, please click here
May 10
12
Good afternoon guys,
I am in a bit of a quandry of which i am asking for community assistance. ( first time for everything
)
I am in the process of evaluating both VMWare ESXi Server and Citrix XenServer Express Edition for a virtual server project which i am currently working on. While the details of the project need to be kept quiet, the bare metal system setup information will be freely available for anyone wishing to evalute these products themselves.
Originally when i started down this path i was looking at the enterprise solutions as well as the opensource solutions for a hypervisor server setup. After speaking to many people who use the system on a regular basis for commercial use i was advised that there are perfectly capable free alternatives out there to the high end commercial solutions.
In the first example I will use VMWare, The “King” of virtualisation technologies (some would say) with a reliable, stable structure which any system would gladly sit ontop of running, with a wide range of server and desktop solutions, ranging from VMWare Player to VMWare ESX Server with vControl software.
VMWare have released a free unlimited version of ESX Server, which they have called ESXi Server. This is a cut down version of the main ESX Server, they both use the same core with the only difference being that the ESXi version has some features not included.
On the other side of the wall we have Citrix, A long time hardball player in the corporate virtualisation market. Providing solutions from thin-client desktop solutions to high end server farm “Cloud” solutions. While i originally looked up the xen project i noticed that the project was purchased by Citrix and they provided a lot of development time to the core of the project.
I then found a very interesting news article that pointed to the fact that Citrix has released a fully capable version of XenServer, This they have branded the “Express” Version. As with the VMWare ESXi solution above the XenServer Express Edition has its limitations.
While this is to be expected it in no way takes away from the core functionality of the respective systems, which is EXCELLENT!
Now then… each system has its respective windows based management tools which both do there job wonderfully, i have found that the Citrix software appears a lot more polished then the vmware product, even though they have both been on the market a considerable amount of time.
But what i am stuck on isnt an administrator level management tool, i am looking for a reliable client level web based management tool that enables the end user the ability to take snapshots of their own respective vps, to starting/restarting/stopping the system without any interaction from the server administration staff, this will offload some of the administration for opensource project this is going to be used for, each vps will allow the end developer to upload, run and test their respective systems without effecting any other users.
So, in summery, if anyone knows of a web based management tool for both the XenServer and VMWare ESXi Server for what i need please place a comment below, many thanks for any feedback in advanced.
May 10
11
Hi Guys,
After working with SVN for a few years i decided to look at alternatives to enable more international collaboration of the projects which i am working on.
As part of the systems i reviewed for my requirements as to what i need, and why i needed it.
During this process i looked at CVS, SVN and GIT, each system has its own pro’s and con’s which could either cause the entire project to fall down around my ears or provide a stable base for us to build a world class project on top of.
CVS – Concurrent Versions System
While i was looking at this system, the CVS system is very stable, mature and effective. This system also ran the versioning of the Linux kernel project for many years. Unfortunately there are a few snags with using this system.
1, The CVS system is now classed as legacy.
2, The development of this system has been halted since 2008 and has since been superseded by SVN.
My Conclusion: CVS while it is very stable, It is no longer supported as a version control system and also has the singular major fall back that if the server that it’s on goes down, you lose the data and your repository information which you would have to manually re-build.
SVN – Subversion
As i have used this system it comes second nature as a viable alternative to what i needed. It is fast, scalable well supported and easy to use.
Looking at its pro’s and con’s unfortunately they appear to be close to the same as the CVS System, the only difference is that SVN is very much alive, supported and has a very active development community.
My Conclusion: While there is still a single point of failure, the development of the system is still in an active state and doesn’t look like it is going to stagnate any time soon. Provided you had a good backup solution in place there is no reason not to use SVN in any size organisation small or large.
GIT – the fast version control system
I have taken a long hard look at this system as all reviews and reports say there is a little learning curve when using GIT in a development environment.
The way this version control system works is that it allows for distributed developers, this is one of the reasons the kernel project has officially adopted GIT as there version system.
Each individual developer has a local copy of the whole repository. This allows for the developer to work offline or in a distributed environment (distance workers/international collaboration) and when the development is at a stage where the developer believes that either the new features can be added to the master tree or a patch can be created to fix/repair a function that is currently broken, the developer can easily push the changes up to the git master server. Also due to GIT being a distributed version control environment you can control the build of a project down to individual departments and have each department working on their own part of the project, to be bought together in the master repository at a later point in time.
My Conclusion: The GIT system fits all my requirements and is very stable; it works effectively and allows for multiple developers across a wider area. GIT allows for setups as simple as few users, to thousands of users. Setup can also be simplified by using 3rd party systems like “Gitosis” which allows for multiple contributors through a single user.
I will be working on an Installation Guide for GIT in the near future, Look out for it on a blog post near you!
May 10
11
Hi Guys,
I have been recently been working on a few complex web development projects which mainly require me to use multiple environments within the development cycle, mainly these are: Development, Staging, Live.
While it wouldn’t be too difficult to manually set an environment variable this caused its own problems in the long run and across multiple developers who are working on the same project within the same development box.
While i was working on one of the project i setup my local development environment and i decided to use a non-web accessible domain name using my local hosts file to bypass my ISP’s and any local DNS setup.
i setup my local hosts file in the format of:
127.0.0.1 project_name.client.dev
While this name convention doesn’t appear to be important it will all be clear when i show the code later on in this post.
To show my clients their site in a “live” environment i setup a sub-domain on my server of dev.zenmedia.co.uk. This will be used as my staging environment and the site name convention will follow that of the local development environment.
When i setup the config.php file i use multiple configuration instances within the same document, this will allow for a single point of setup for any of the three development environments.
// This is where the environment is checked and acted upon
// dev server
if(stristr($_SERVER['HTTP_HOST'],'.dev')){
error_reporting(E_ALL);
define("SQL_USER", 'dev_user');
define("SQL_PASSWORD", 'dev_pass');
define("SQL_DB", 'dev_db');
define("SQL_SERVER", 'localhost');
}
// staging server
elseif(stristr($_SERVER['HTTP_HOST'],'.dev.zenmedia.co.uk')){
ini_set('display_errors',0);
error_reporting(E_ALL);
define("SQL_USER", 'staging_user');
define("SQL_PASSWORD", 'staging_pass');
define("SQL_DB", 'staging_db');
define("SQL_SERVER", 'localhost');
}
// live server
else{
ini_set('display_errors',0);
error_reporting(E_ALL);
define("SQL_USER", 'live_user');
define("SQL_PASSWORD", 'live_pass');
define("SQL_DB", 'live_db');
define("SQL_SERVER", 'localhost');
}
While this appears to be a little overkill in relation to assignment of variables it allows ALL developers a single point of reference for db connection variables.
While i can guess many of you are wondering, “why didn’t you use a switch?” the reason for this is simple. There currently isn’t a reasonable method to allow for part $_SERVER['HTTP_HOST'] domain name matching, in addition to this while a switch is visually easier to read, i choose function over form.
Hi Guys,
I’ve been thinking and I want this blog to be a useful repository of my ramblings and experiences so that others can make use of them.
Primarily this post was originally going to be for my own use, but I think that the community at large will be able to benefit from it.
There will be an update to this at some point in time as the installation that I have here is far from perfect but it will give you a good starting block on how to get Railo up and running quickly and efficiently.
Step 1: – Gather all the required elements to make this work.
The above components are listed as they are what i have used on my installation.
Step 2: The installation.
Once you have downloaded all the components as the root user I (for sake of easy management and updates in future) moved the JDK installation binary and also resin-3.1.10.tar.gz to the “/opt” directory, this will assist in future for any updates etc as everything is located in a single place.
Once the files was moved i initiated the JDK installation by running
root@ukws /opt $: ./jdk-6u19-linux-i586.bin
This started the installation of the JDK, What follows is a fairly lengthy legal document that Oracle would like you to read. After which once you have come to the end of the licence agreement it will ask you if you choose to accept the agreement or not. You will either have to answer [yes] or [no] at this point. For the installation to continue you have to answer [yes].
Once the licence agreement has been accepted for the JDK, the installer will begin extracting and verifying the content of the binary installer. Once completed you will have a directory like.
jdk1.6.0_19
To make matters easier and instead of typing jdk1.6.0_19 every time i needed to access the java directory i created a symlink to this directory using…
ln -s jdk1.6.0_19 java
Then to satisfy the operating system path veriable and to negate the use of specifying a seperate JAVA-HOME path I created the following symlink…
cd /usr/local ln -s /opt/java jdk
I then returned to the /opt directory to continue.
Now the JDK has been installed its time to install Caucho Resin ( I chose this java application server as after much research I found other peoples experience with it to be better within a hosting environment.
To start the installation first we need to extract resin from its tarball, to do this i use the command.
tar zxfv resin3.1.10.tar.gz
This will extract all the files to a directory of the same name, in this case “resin3.1.10″
To simplify matters and to allow upgrading in the future (to help prevent breaking custom scripts). I create another symlink..
ln -s resin3.1.10 resin
Now its time to build the resin instance, I took the following steps.
cd resin ./configure --with-apache=/usr/local/apache; make; make install
This process will not take long to complete.
Once this has completed there are a few things to configure before you start to use resin.
At this point I would like to say that by using the –with-apache tag the Caucho Resin build has created the module and inserted the code into the apache httpd.conf file so apache will require a restart. To do this run the command…
service httpd restart
Now we are at the point where we need to configure Resin to run on your server, by default resin will take control of .jsp, .jspf, .jspx, .php. While this is a good starting point for many apache users as we are running a cPanel installation chances are that you have already used EasyApache installation script to setup your apache installation already and as such most probably have PHP already setup.
From what I can tell ( This is purely my oppinion and isnt intended as an insult to the creators of a great product), but. If its not broken why try to fix it? I have found that the Resin implimentation of PHP can cause some issues with existing sites that currently run on PHP, this may be due to the security limitations of running PHP code within a java virtual machine but it can cause a lot of upset customers. (including yourself).
To configure Resin (without Railo at the time being) I took the following steps…
cd /opt/resin/conf
( I choose nano as my text editor but feel free to use whatever you like )
nano app-defaults.xml
I then moved down to the line containing.
<servlet-mapping url-pattern="*.php" servlet-name="resin-php"/>
And removed it (as we dont want resin to compile our PHP pages as per my comment above)
I then moved down to the line containing.
<welcome-file>index.php</welcome-file>
And removed it.
This taken care of i saved the document (Ctrl + O In Pine) and exited (Ctrl + X)
I then opened the main Resin configuration file.
nano resin.conf
I moved down to the line…
<!-- define the servers in the cluster --> <server id="" address="127.0.0.1" port="6800"/>
and changed it to..
<!-- define the servers in the cluster --> <server id="dews" address="127.0.0.1" port="6800"/>
This will make starting the server instance easier when we come to it later. I then moved further down the document to…
<resin:set var="resin_admin_external" value="false"/>
And changed it to…
<resin:set var="resin_admin_external" value="true"/>
This will enable public access to the resin configuration.
Now we need to save these changes and edit your editor (Ctrl + O) (Ctrl + X)
Now we need to run the Resin Instance which we will do by doing the following.
cd /opt/resin/bin ./httpd.sh -server dews start
This will return “Resin/3.1.10 started -server ‘dews’ for watchdog at 127.0.0.1:6600″ and return you back to the command line.
Now we have Resin up and running you need to define a username and password for the Resin administrator. To do this open your web browser of choice and navigate to http://<your servers base hostname or ip>:8080/resin-admin/
This will bring up a page with a login box and a username/password hash creation tool, We will need the bottom tool for the next part, please enter your username, password, and password again and click on submit. the following page will contain a small information box which will have a very small code block which within it will have a line similar to:
<user name="administrator" password="s6er3tDlJ5S+WAMK1qvnCQ=="/>
This needs to be coppied to your clipboard and we need to go back into your ssh connection.
re-open the resin.conf file and navigate down to the line which say…
<management path="${resin.root}/admin">
<user name="admin" password="password" disable="true"/>
Paste the line which the web interface gave you under the <user name=”admin… line and save (Ctrl + O). As resin continually monitors all of the configuration files in relation to resin by default for any changes, once you have saved the username, within a couple of seconds you will be able to login with the username and password you gave to the hash tool.
Now we need to add a virtual host as so we can test the installation of Resin on your cPanel installation.
Still within the resin.conf move down the config file so untill you come to:
<prologue> <resin:set var="resin_admin_external" value="true"/> <resin:set var="resin_admin_insecure" value="true"/> </prologue> </web-app> </host> </cluster>
Now, between the two closing tags “</host></cluster>” we are going to enter the virtual host entry into here, the code block which we will use is:
<host id="<domain>" host-name="www.<domain>" root-directory="/home/<username>/" > <web-app id="/" root-directory="public_html" /> </host>
I have chosen this method as it allows me to define Railo to specific virtual hosts (instead of everyone). <domain> is your domain name without the www. prefix and <username> is the username that is used by cPanel to generate your home directory.
Now we once again need to save the resin.conf file and give the resin server time to restart itself.
In your favorite html editor we are going to create a sample.jsp test page.
I used the code:
<HTML> <HEAD> <TITLE>hello jsp</TITLE> <!-- the variable, message, is declared and initialized --> <%! String message = "Hello, World, from JSP"; %> </HEAD> <BODY> <!-- the value of the variable, message, is inserted between h2 tags --> <h2><font color="#AA0000"><%= message%></font></h2> <h3><font color="#AA0000"> <!-- the java.util.Date method is executed and the result inserted between h3 tags --> <%= new java.util.Date() %> </font></h3> </BODY> </HTML>
In the sample.jsp file i created and uploaded it to my domain that i added the virtual host for, then in a web browser navigate to that domain name and try and access the sample.jsp file which you have just uploaded.
If all is well you will get a display similar to:
If you get this then Congratulations! you have successfuly installed Resin Application Server.
OK!, so now you have resin installed we just need to complete the Railo Installation and intergration with Resin.
We now need to exit the resin.conf file and navigate back to /opt, once back at this point we need to extract the Railo files so we can add them to Resin, to do this i took the following action.
tar zxfv railo-3.1.2.001-jars.tar.gz
Then i moved the contents of railo-3.1.2.001-jars using…
mv railo-3.1.2.001-jars/* /opt/resin/ext-webapp-lib/
Now we need to finalise the configuration of Resin to enable Railo and coldfusion functionality, to do this you need to edit the app-default.xml file again.
cd /opt/resin/conf nano app-default.xml
Navigate down to the last </servlet> tag and then paste the following code:
<servlet servlet-name="CFMLServlet" servlet-class="railo.loader.servlet.CFMLServlet">
<init-param>
<param-name>railo-web-directory</param-name>
<param-value>{web-root-directory}/WEB-INF/railo/</param-value>
<description>Railo Web Directory directory</description>
</init-param>
<!-- init-param>
<param-name>railo-server-directory</param-name>
<param-value>./</param-value>
<description>directory where railo root directory is stored</description>
</init-param -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet servlet-name="AMFServlet" servlet-class="railo.loader.servlet.AMFServlet">
<load-on-startup>2</load-on-startup>
</servlet>
Now we need to add in the servlet mappings, after the last <servlet-mapping entry please add the following block of code:
<servlet-mapping url-pattern="*.cfm" servlet-name="CFMLServlet"/> <servlet-mapping url-pattern="*.cfml" servlet-name="CFMLServlet"/> <servlet-mapping url-pattern="*.cfc" servlet-name="CFMLServlet"/> <servlet-mapping url-pattern="*.cfm/*" servlet-name="CFMLServlet"/> <servlet-mapping url-pattern="*.cfml/*" servlet-name="CFMLServlet"/> <servlet-mapping url-pattern="*.cfc/*" servlet-name="CFMLServlet"/> <servlet-mapping url-pattern="/flashservices/gateway/*" servlet-name="AMFServlet"/>
Ok, we are almost there, now please scroll down to the
<welcome-file-list>
xml block which contains multiple instances of <welcome-file> tags, within this block please add <welcome-file>index.cfm</welcome-file>. Now we need to save the app-default.xml file and give Resin a chance to restart. you should now be able to access the Railo Administration pages by visiting: http://<hostname you entered into resin.conf as virtual host>/railo-context/admin/server.cfm
With this setup each individual virtual host has its own server entry and its own context, i will be updating this post at some point (maybe with a part 2) which will give details on how to convert this to run with a single server.cfm instance to control all web instances on the server.
As with anything opensource, this guide is free (as in beer) but if it feels like it has a dire need to burn your house down, format your servers, or drop kick your computer monitor, then harrassed.net accepts no responsibility for the above actions or any failure on your part to ahear to good computer practices.