I should point out that the TV signal doesn’t actually reach the TV because we’re deccorating and the TV is in the other room, but its progress. We had a second TV point put in to the office so the webserver can record stuff for us, so we can now watch things over the network. I can’t see when we’re going to have time to watch any of it but the recordings are there, just in case. I know a lot of people have thought it strange we didn’t miss the TV, surely we can’t be the only people who don’t watch the thing?
Author Archives:
Wall Worries
It was kinda black and furry underneath the plaster too, and I started to find layers of stuff under the plaster …
At this point the smell of damp and the slightly wet wallpaper layers coming off the wall started to ring alarm bells and we started scraping to see how big the area affected was.
By the time we had got everything off the wall that we could, beyond the edges of the apparent damp and back to the original plaster covered with five distinct layers of (amazing, retro) wallpaper, then artex, then more plaster, then painted, we ended up with this:
We think this is all due to there having been a broken downspout exactly on the other side of that wall, it was broken when we moved in and we don’t know how long it was like that. Its now fixed and the wall seems to be drying out OK on the inside.
However that leaves us with several large holes in the walls in that room, from rewiring, boiler removal, panelling removal and half a wall that wasn’t plastered in the first place for reasons that aren’t clear. There is also a weird bit in the ceiling after the shower leaked through it and we had to replace a whole section. It turns out that it is going to cost less than 400 pounds to have the whole thing, walls and ceilings, completely skimmed to flat walls and proper corners … so they are coming on Wednesday to do it. We weren’t planning on it but at least then we’ll be able to paint and the walls will be much more beautiful than anything we’d manage ourselves.
PHP Women at PHP London
At this event I will be busy with phpwomen, wearing my t-shirt and generally making a noise and raising the profile of the group. If you are attending the conference then you are morally obliged to pop over to us and say hello, we like to meet new people. If you are extra nice to us we may give you a t-shirt! There will be women from the UK and also elsewhere in Europe and it’ll be great to meet those I haven’t met yet and also see some old friends from other conferences. An excellent way to spend Leap Year Day in my opinion :)
New Job Announcement
Its been a funny few months, I’ve been very active in the PHP community, mostly because I’ve needed some professional support and they are a wonderful set of people. They have been graceful to accept my attempts to contribute to the community and have supported and encouraged me every step of the way. Through this I came to do a PHP|Abstract podcast, a talk at a BarCamp, quickly followed by being stalked and offered a job by a very good local-ish employer. I ended up passing on the opportunity because it was the kind of local that is too far and awkward to do in the rush hour for every day, however the experience was amazing and I met some great people in the process. I studied for and managed to pass my ZCE exam, and in the same week parted company with my employers of almost a year. In the last five days I have communicated with some superstars from my industry, looked over my shoulder to find the other lornajane that surely they are actually looking for, received two excellent job offers from two uber cool companies, and accepted one of those offers. I owe thanks to many, many people for the moral support, listening and general egging-on they supplied – guys, you know who you are.
After all that – I need a nice cup of tea and a sit down … :)
PHP5 Soap Server
Start Small – Build and Check A Class
I firstly built some unit tests using PHPUnit (more about that another day perhaps, but let me say it is excellent and I tumbled to it really easily once I’d started), then wrote my class and verified the tests were passing. This was to avoid trying to debug the PHP functionality through the added layer of the SOAP.
Simple SOAP Starting Point
My next step was to get a working SOAP service. This isn’t remotely tricky except that PHP can’t generate its own WSDL file (for extremely valid reasons but that doesn’t help me), so you either need to write it by hand or you need to generate it somehow.
As my starting point I took the whole working code from this fantastic example and checked that it worked for me.
SOAP setClass() and WSDL Fiddling
Having got this far I changed my SOAP server code to use the setClass() method and pointed it at my own original class. I then hand-edited the WSDL (one function at a time) to reflect the data types and arguments that would be moving through the service.
The actual service code looks like this:
require_once('lib/myClass.php');
ini_set("soap.wsdl_cache_enabled", "0");
$server = new SoapServer("service.wsdl");
$server->setClass("MyClass");
$server->handle();
The example WSDL supplied by the JimmyZ tutorial has a single function in it at the early stages, and I started with that, then adapted it for one single function from the class. This is perfectly valid providing you don’t try calling anything else! The PHP function declaration took this form:
function getAccountStatus($accountID)
The function returns two variables – it passes back the account ID and also returns information about the number of credits on the account. The accountID is a string of up to 8 characters, the other variable is a number. Here is the WSDL adapted for this purpose:
Once I discovered that WSDLs are best read from end to beginning, I was able to expand the example above for all the other various functions I needed.
Hopefully this helps someone get started. There are various tools available for generating the WSDL, in particular try either George’s suggestion, the offering from phpclasses.org, or check out the automatic generator in ZDE. Certainly there are tools available, but I didn’t manage to find one that did the trick for me.
If you are writing, or have written, a SOAP service in PHP5 then drop a comment and let me know – I certainly felt like I was in a minority on this project. Similarly if I’ve missed anything then I’d appreciate comments so I know for next time.
So Begins a New Chapter
To answer the first three questions: Yes, I am fine. Yes, they are paying me my notice period so I won’t starve. And yes, I need a new job! I’ll put up a coherent post on me and my skills soon.
Donate to PHPWomen and Win
PHPWomen finances goodies to give away at conferences and also assists members who perhaps would not ordinarily be able to attend conferences to get there and participate. More women at conferences …. can that be a bad thing?
PHP London 2008 Schedule
I’m a Zend Certified Engineer
Logrotate Error on Ubuntu
/etc/cron.daily/logrotate:
error: error running shared postrotate script for /var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log
run-parts: /etc/cron.daily/logrotate exited with return code 1
What’s happening is that after all the mysql backing up and everything is done, ubuntu is trying to use the debian-sys-maint user to flush the logs, this is actually called in /etc/logrotate.d/mysql-server. On my system, we seem to have lost this mysql user.
The solution is to look for the password used in the /etc/mysql/debian.cnf file, mine looks like this:
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = xxxxxxxxxxxxxxxx
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user = debian-sys-maint
password = xxxxxxxxxxxxxxxx
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
Using the password, and some inspiration from this post on the Ubuntu Forums I recreated the user with the necessary permissions and password with:
GRANT RELOAD, SHUTDOWN, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY PASSWORD 'xxxxxxxxxxxxxxxx'
This did the trick, as the nightly errors have now disappeared from my script. Hope this helps someone in a similar situation – if you can expand these notes then please add a comment and I will update this as needed – thanks :)