Educating the world

Our blog has over 10,000 readers a month

Free Hydrogen and Oxygen for the World

January 4th, 2013

The trouble with splitting Hydrogen and Oxygen from water is that it takes a lot of energy. This means making Hydrogen fuel cells for cars is not sustainable. Luckily those clever boffins at the Weizmann Institute lead by Prof. David Milstein have developed a brand new way to use photosynthesis to split the water.

Unlimited free Hydrogen and Oxygen, think about how that will change the world? Their will be no need for oil. Make the fuel cells small enough and we could see batteries full of water. You could refill your car from the tap or even more importantly from the rain. Imagine that! In the United Kingdom we’ed never have to stop for “water” again.

According to the Royal Institution’s 2012 Christmas Lectures the scientists have only got it to work with ultraviolet light. The catalyst metals to speed up the process may even be re-generated just by boiling it in water!

When Edison was looking for a material to put in his light bulbs, he went through hundreds of different substances looking for one which could take the current required to heat up and glow without oxidising. He tried everything from his own hair to cotton to gold before finding tungsten. There is a world wide effort to find the correct catalyst metal compound that will allow photosynthesis to work in normal day light. There are a few more variables this time but we’ll get it eventually. I can’t wait to stick it to The [Oil] Man and for the time when I never have to talk to a car mechanic.

You can read more about it here. You’d better put your chemistry head on though!

http://www.sciencedaily.com/releases/2009/04/090406102555.htm
http://www.weizmann.ac.il/Organic_Chemistry/milstein.shtml

Plesk update causes makewhatis to fail

November 7th, 2012

During the Plesk 10.4 update the installer tries to “clean up” your platform. “Clean up” is Plesk code for “Break". The update deletes everything in /var/cache. While this area is reserved for caching, most of the applications that use it don’t expect their directory structure (that they created on installation) to disappear from under them. This was the case for the /etc/cron.daily/makewhatis.cron cron program which runs makewhatis which requires the directory /var/cache/man.

/etc/cron.daily/makewhatis.cron:

/usr/sbin/makewhatis: line 388: /var/cache/man/whatis: No such file or directory
chmod: cannot access `/var/cache/man/whatis’: No such file or directory
/usr/sbin/makewhatis: line 388: /var/cache/man/whatis: No such file or directory
chmod: cannot access `/var/cache/man/whatis’: No such file or directory
/usr/sbin/makewhatis: line 388: /var/cache/man/whatis: No such file or directory
chmod: cannot access `/var/cache/man/whatis’: No such file or directory
/usr/sbin/makewhatis: line 388: /var/cache/man/whatis: No such file or directory
chmod: cannot access `/var/cache/man/whatis’: No such file or directory

There are a couple of ways to fix this but the majority will possibly get overridden on the next update if Plesk doesn’t address this issue, which they probably won’t because they usually don’t!

The simplest thing to do is create the missing folder branch and check it is still there after the next update.

Log in to your Plesk server and issue the following command:

mkdir /var/cache/man

More Plesk fixes are available on Fixing problems caused by updating Plesk

Unable to generate a temporary class

November 2nd, 2012

If you use serialisation then IIS dynamically compiles the extra classes it needs to perform the serialisation and it uses the Windows temporary folders to store the class files definition and class compilation artefacts. If IIS can’t write to the temporary folder you will get this error message:

Server Error in ‘/application’ Application.
Unable to generate a temporary class (result=1).
error CS2001: Source file ‘C:\Windows\TEMP\1kcmvhly.0.cs’ could not be found
error CS2008: No inputs specified

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Unable to generate a temporary class (result=1).
error CS2001: Source file ‘C:\Windows\TEMP\1kcmvhly.0.cs’ could not be found
error CS2008: No inputs specified

Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:
[InvalidOperationException: Unable to generate a temporary class (result=1).
error CS2001: Source file ‘C:\Windows\TEMP\1kcmvhly.0.cs’ could not be found
error CS2008: No inputs specified
]

System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence) +1357
System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies) +2809
System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence) +366
System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace) +951
WebApplication1.LicenseManager.getLicenceRequestResult(String url) in D:\views\davidne_view\kernel\WIP\WebApplication1\WebApplication1\LicenseManager.cs:16
WebApplication1.LicenseManager.obtainLicenseKey(String version, String feature, String sessionid, String username) in D:\views\davidne_view\kernel\WIP\WebApplication1\WebApplication1\LicenseManager.cs:33
WebApplication1.LicensedSessionModule.OnPreRequestHandlerExecute(Object source, EventArgs e) in D:\views\davidne_view\kernel\WIP\WebApplication1\WebApplication1\LicensedSessionModule.cs:55
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +270

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272

If IIS can’t create files in that folder then the application will fail at runtime so, you must give IIS write access to C:\windows\temp.

  1. Right click on C:\windows\temp select Properties.
  2. Select the Security tab.
  3. Click Edit
  4. When the Permissions for Temp dialgue box opens click Add.
  5. In the Enter the object names to select(example) box enter iis_iusrs.
  6. Click Check Names and the system will change the name to HOST\IIS_IUSRS. Click OK.
  7. Highlight IIS_IUSRS (HOST\IIS_IUSRS) and in the Permissions for IIS_IUSRS box, check all the security boxes in the Allow column. You can’t check Special permissions so ignore that one.
  8. Then OK all the way out.

It moans about changing permissions on system folders so just click Yes to that. Now you should be able to reload the page without a problem.

There is a way to get around it by recompiling the classes needed for serialisation but I’ll save that one for another time.

Setting Google Chrome's Google Maps extension's location

October 28th, 2012

I downloaded the Google Maps extension from the Web Store and installed it into Google Chrome. Opened a new tab and clicked the Google Maps button, it got me straight to a zoomed out picture of the United States of America. I couldn’t find any options inside Chrome’s settings or extension settings to change my default location.

Had a bit of a Google and found quite a few forum threads of people with a location mismatch. The main suggestion was to install the English (UK) version of Chrome (instead of the English (US) version which is the default version on the download site). The next most popular suggestion was to change the language settings to add English (UK) and increase it’s priority. I tried all of the suggestions and none of it worked.

Today, when I clicked the Google Maps extension button it took me to the USA as usual but I noticed on the right information panel it said “United States Not your current location? Correct it". So I clicked the “Correct it” link. I entered my location and Google Maps took me there. I closed the tab and reopened a new one, clicked the Google Maps extension button and Hey Presto I’m taken straight to my real location.

It’s so simple to change the default location and the actual setting is just in the right place. If you are out and about you can easily change to any location at any zoom level. Perfect.

Open relay caused by Plesk 10.4.4 update

October 17th, 2012

Another great shout out to the boys at Plesk. Installing patch 10.4.4 turned my box into an open relay that allowed spammers to use my host to send junk email.

I started to see the following appear in the process list. We were also finding that emails that were legitimately being sent were taking ages to come through. Logged in and checked the process list and I was very surprised to see:

... xinetd -stayalive -pidfile /var/run/xinetd.pid
... \_ /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/cmd5checkpw
... \_ /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/cmd5checkpw
... \_ /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/cmd5checkpw
... \_ /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/cmd5checkpw
... \_ /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/cmd5checkpw
... qmail-send
...  \_ splogger qmail
...  \_ qmail-lspawn | /usr/bin/deliverquota ./Maildir
...  \_ qmail-rspawn
...  |   \_ /var/qmail/bin/qmail-remote.moved msa.hinet.net ljmbcc@yahoo.com.tw super.web1126@msa.hinet.net
...  |   \_ /var/qmail/bin/qmail-remote.moved pchome.com.tw ljmbcc@yahoo.com.tw 0929204890@pchome.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved ms3.hinet.net ljmbcc@yahoo.com.tw jacky.wu@ms3.hinet.net
...  |   \_ /var/qmail/bin/qmail-remote.moved live.co.uk co-operative.bank.plc.uk@co-op.account.aiert-wcc.cooperative4.host-8-coop.co
...  |   \_ /var/qmail/bin/qmail-remote.moved ms33.hinet.net ljmbcc@yahoo.com.tw aaba@ms33.hinet.net
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw s0925639306@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw t1014176@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw ce_0938468477@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved xuite.net ljmbcc@yahoo.com.tw dayaworks@xuite.net
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw moto231@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw a0932217273@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw a7824331@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw jolin1122kimo@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw mayeh888@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw sd1903@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw pink_ciw@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw kime20060719@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw eva7752@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw godhelll@yahoo.com.tw
...  |   \_ /var/qmail/bin/qmail-remote.moved yahoo.com.tw ljmbcc@yahoo.com.tw dunnini@yahoo.com.tw
...  \_ qmail-clean

Another symptom was that the secure log was registering loads of connects. You might get this on a busy server but ours isn’t.

tail -f /var/log/secure
Oct 15 13:04:14 s15427035 tcp-env[19544]: connect from 62.193.50.2 (62.193.50.2)
Oct 15 13:04:14 s15427035 tcp-env[19545]: connect from 177.0.160.130 (177.0.160.130)
Oct 15 13:04:14 s15427035 tcp-env[19546]: connect from 184.77.96.103 (184.77.96.103)

To cut a really long boring story short, Plesks 10.4.4 update added extra services to the /etc/xinetd.d:

cd /etc/xinetd.d
ls -l smtp*
-rw-r–r– 1 root root 288 Oct 15 13:03 smtp_ok // switch off
-rw-r–r– 1 root root 397 Oct 15 10:50 smtp_psa
-rw-r–r– 1 root root 290 Oct 15 13:03 smtps_ok
-rw-r–r– 1 root root 398 Oct 15 10:50 smtps_psa // switch off

Edit smtp_ok and smtps_ok and update the disable line to “yes". If the line doesn’t exist then create it.
Edit smtp_psa and smtps_psa and update the disable line to “no". If the line doesn’t exist then create it.

When you have made the changes, restart xinetd:

/etc/init.d/xinetd restart

The first thing to do is stop qmail so it can’t send any more junk mail.

/etc/init.d/qmail stop

Now that we’ve sealed the hole left by the Plesk 10.4.4 patch, we’ll see how much mail we need to clean up.

/var/qmail/bin/qmail-qstat
messages in queue: 7589
messages in queue but not yet preprocessed: 0

I looked for ages tying to figure out how to delete mail from the qmail queue and there doesn’t seem to be a way in the standard qmail tool set! So on to the internet and I found Qmail-Remove. This tool deletes everything in the qmail queue. It has a couple of different options to only delete certain emails but I’ll leave that as an exercise for the reader.

I knew that everything in the queue was junk so I could do a blanket delete:

qmail-remove -d

Check it’s all gone, then restart qmail:

/var/qmail/bin/qmail-qstat
messages in queue: 0
messages in queue but not yet preprocessed: 0

/etc/init.d/qmail start