Sounds familiar….
November 13th, 2008
So familiar its (almost) not even funny…

ref last weeks post (2)
So familiar its (almost) not even funny…

ref last weeks post (2)
the right tool for the jobSo, you’re going to parse a webpage, to extract some information. For instance if you want to get the tracking information for your last online order, and you want to display the tracking information changes using growl, dbus notifications or xosd.
You know regular expressions, so you go to the job with your long range missiles ready. But wait a minute, you’ll probably solve the problem but is regular expressions really the right tool?
The pro for regular expressions is that you can use the same tool you always use for parsing jobs, but then again you doesn’t learn anything new out of this. You might fortify your position as regex wizard even more, but how about something completely different?
Now. Most webpages is written in HTML, and some even in XHTML, for HTML documents languages like Python has a built-in parser, after the model of the SAX-parser. (It’s probably the other way around, the SAX parser is built on the base of the HTML parser…) Most programming languages has good support for XML, so for XHTML documents, you can use the HTML-parser, a SAX-parser or even the XML-DOM parsers.
The benefit of doing it this way is that your parser will probably be more robust to minor changes in the webpage. You don’t reinvent the wheel (The best way I’ve found to parse HTML documents using regular expressions is to make a specialized SAX-like parser anyway). Your code will probably be readable in a year, and others might even be able to understand your code. And finally, you learn something new, which might give you a fresh view on a lot of problems.
Now back to the original issue, to make a parser for the parcel tracking of your postal service. Here’s an example parsing the shipment tracking page of posten, the norwegian postal service.
PepperoniwrapDu trenger:
Til denne retten trenger du enten to stekepanner, eller en wok-gryte. Jeg bruker en stekepanne med lokk, og en uten.
Dersom champignonene er store skjærer du dem i 1cm tykke skiver. Dersom det er små søte champignoner, hiver du dem bare rett i stekepannen med lokk. Her skal de få ligge en stund, mens vi tilbereder det andre som skal i denne retten.
Hakk opp løken i passe store biter, ikke helt smått, men mindre enn skiver. Stek løken i den andre pannen. Mens løken stekes, skjærer du gullerøttene til lange tynne pinner, slike du ville ha brukt til dip’en på lørdagskvelden
. Disse putter du i et glass. Det er litt artig å servere det slik.
Så hiver du løken over til soppen, og begynner å steke pepperonipølsene i den andre stekepannen. Disse skal stekes til de har blitt crispi.
Nå kan du tilberede lefsene slik det står på pakken, eller lage et snitt i forpakningen, og gi dem halvannet minutt i microen.
Hell pølsebitene over til soppen, og sørg for at du får med deg fettet. Det setter kryddersmak på retten. Krydre med salt og pepper, her vet du selv best hvor mye smak du liker. Husk dog at pepperonipølsene allerede er ganske salte og sterke. Soppen trenger dog litt salt og pepper for å komme til sin rett. Hell over fløten, og la det surre en stund.
Server med alfa-alfa spirer, salat og reddik som har hatt et møte med ostehøvelen ![]()
Unit tests saves the dayCurrently I’m developing a webservice interface for queue handling in Asterisk towards another company, that is developing a CRM solution which will utilize my webservice for Computer Telephony Integration (CTI).
So, today the developer in the other company got such an understanding of the service that he started suggesting changes. A lot of changes in the DTD etc. These changes would imply some changes in the architecture downwards in the system. It is quite scary to start tearing things apart, when you already got something working. That is, if you don’t have a large amount of unittests.
Luckily I had good unittest coverage. So changing stuff was really just a matter of changing the tests, do fit the proposed changes. Test to see where I needed to change something. Do the changes and run the tests again.
It feels very good to have proper knowledge that everything actually works properly after a refactoring like this.
Unit testing is like love. It’ll keep you going when everything else fails. (citation)
Pizza har blitt en så vanlig matrett i Norge at mange ikke kan forestille seg et liv uten. Ost er ett av de produktene der det er dårligst med alternativer for dem som ikke kan innta melkeprodukter. Derfor kan nettopp pizza og ost være det største tapet for noen som oppdager at det er melk som gjør at de alltid har vondt i magen. De fleste andre ting, som hvit saus, fløtesaus (til en viss grad), soppstuing osv. kan enkelt lages med Kokosmelk, rismelk eller soyamelk i stedet. Naturligvis krever dette at en kutter ut allt av halvfabrikater og ferdigmat. For selv mat som aldri har hatt melk i seg i tradisjonell matlaging har tilsatt melkesukker og/eller melkeproteiner som ferdigmat.
Vi har i lengre tid spist innbakt pizza i stedet for vanlig pizza, fordi innbakt pizza er helt greit uten ost. Men det er ikke helt det samme som en vanlig pizza, fyllet som kommer opp gjennom garnityren blir ikke stekt som på en vanlig pizza, og garnityren blir bare et ekstra lag med bunn.
For noen dager siden da jeg, som tåler melk, satt og spiste en pizza med ost på Naboen, mens min bedre halvdel spiste fiskepinner og salat fikk jeg en idé, hva om en bruker hvit saus, laget på soyafløte eller kokosmelk som garnityr?
I dag prøvde vi det. Det er ikke 100% det samme som en vanlig pizza med ost, men det var nært nok.
Det største problemet, om noen, er at dette er en pizza som er relativt mye arbeid å lage. Noe helt annet enn å slenge en grandiosa i ovnen.
Jeg laget bunnen med en govbrødmelblanding, litt olje, salt og bakepulver. Den fikk seg en runde i Electrolux assistent, og bredd utover en plate.
Fyllet var purre, løk, masse sopp som var stekt på forhånd i store biter, ananas, tomatsaus og pepperoni.
Over dette fordelte jeg et lag med tykk hvit saus, og satte det i ovnen.
I går gikk jeg for å levere macen min på service. På veien gikk jeg og hørte på Misjonen på P4. Et par ganger i timen var det da en stemme som i et irriterende volum og tonefall kunne fortelle meg at Misjonen PRESANGTERES av Telehuset, faghandel innen tele og data…
Fra bokmålsordboka:
| presente’re v2 (gj fr fra lat., av sm o s *presens, eg ‘gjøre nærværende’) | |
| 1 | vise, legge fram p- et nytt produkt / p- noen en regning, en veksel / framføre, spille teateret skal p- to Ibsen-stykker |
| 2 | forestille, framstille en person for en annen får jeg p- mannen min / p- en gjest for vennene sine / refl: du presenterte deg ikke sa ikke navnet ditt |
| 3 | mil.: p- gevær gjøre honnør med geværet |
Og…
presan’g m1 (fra fr, se *presentere) gave få mange p-er på fødselsdagen sin
Det er en sammenheng mellom disse. Men hvis en skal lage et ord som presangtere, må en vel tenke i retning av ordet pakketere, som selgerene på jobben er så glad i. Det er altså å gjøre noe til en pakke. Så å presangtere må da være å gjøre noe til en presang, altså en gave.
As you can see I ran memtest86+ yesterday, and it gave me lots of errors. However something wasn’t smelling right, so I thought I’d run the same test on two other macbooks and one PC. The PC was clean, but both the macbooks apparently had exactly the same bugs as mine. So, it seems memtest86+ isn’t really macbook compatible. Memtest86 wouldn’t even boot. It might maybe be better if memtest86+ also wouldn’t boot instead of giving me false errors.
However. There’s something wrong with the machine, it’s slow, it crashes, it has sudden reboots. It even has strange graphical artifacts on the screen and the operating temperature is about 85 degrees celsius.
I have sort of a love/hate relationship with Python, the programming language. Coming from PHP and Java which both have excellent documentation, while lots can be said about the solutions. With Python 2.6 the documentation really has improved, but its still not really there, while the solutions are so elegant that the only reason you don’t guess how to do stuff is that it feels too simple.
Today I had one of these realizations, while reading Wayne’s snippet of the day.
Python has a really nice list-generation scheme, so you can generate lists of the content you want from another list of object with only one line of code.
Example:
Here I generated a list of whole numbers from a list of non-whole numbers.
Now We’ll take this further.
Lets say we want to filter the list, so we’ll only get the numbers that satisfy 1<=x<2.
We could do this using filter() and lambda functions. Which is totally OK. It’ll make Python newbies totally confused (which it did with me until recently, when I realized what lambda functions really are (I’ll get back to this)), but it’ll work nicely.
But wouldn’t it be nice if we could use the same list generation scheme for this as well?
Guess what. You can!
Doing the same using filter and a lambda function will look like this
and without using a lambda function:
All of these will work equally fine, and none of them is very hard to understand, as long as you keep in mind that lambda functions just are like anonymous functions/classes.
But there is something very facinating with the elegance and simplicity in the syntax of the list generator snippet.
I has it.
Got this in my mail today:
Good day my friend,
I have a proposal for you - this however is not mandatory nor will I in any manner compel you to honor against your will. I am 50, and work with a bank (one of the African leading banks in the West Coast). Here in this bank existed a dormant account for the past 8 years which belong to a American national who is now late Mr. Raymond Beck Mrs. Dorene Beck who died on Egypt Air Flight 990
http://news.bbc.co.uk/1/hi/world/americas/502503.stmWhen I discovered that there had been no deposits or withdrawals from this account for this long period, I decided to carry out a system investigation and discovered that, none of the family member nor any relation of the late person is aware of this account. This is the story in a nutshell. Now I want an account overseas where the bank will transfer these funds.
Thereafter, I had planned to destroy all related documents for this account. It is a careful network and for the past eleven months, I have worked out everything to ensure a hitch-free operation.
The amount is not so much at the moment and plus all the accumulated
Interest the balance in this account stands at-(US$ 9.5 million US dollars).Now our questions are-
1. Can you handle this project?
2. Can I give you this trust?
3. What will be your commission?If you can sponsor this transfer, consider this and get back to me as soon as possible.
Finally, it is my humble prayer that the information as contained herein be accorded the necessary attention, urgency as well as the secrecy it deserves. I Expect your urgent response if you can handle this project. Call me at this direct line +XXX-XXXXXX-XXXXXX after sending a mail for confirmation.
Respectfully yours,
Mr. Moses Dante.
And ofcourse this was sent from an Yahoo Email account