PhoneGap / Cordova EXIF bug on iOS

I used to curse the rate of which new releases of PhoneGap / Cordova kept popping up. It often meant alot of hassle for me to upgrade projects to keep up. Sometimes these upgrades needed to be done over several versions of PhoneGap which of course made things harder.

Now I find myself at the complete opposite end, I just cant wait for new releases of PhoneGap! The reason for this is called CB-1285. A bug (or limitation) that results in images received from the PhoneGap API lacks the EXIF data that normally is present. One such example is the orientation meta data that is used to rotate the image. Other EXIF data includes camera type and sometimes also geocoordinates.

Trying to figure out why my images got rotated took some research. It wasnt made easier by the fact that PhoneGap is known under many different names. PhoneGap, Cordova, Callback and under either Adobe or Apache.

EDIT: The bug has been marked as resolved in 2.6.0 but I am still unable to get the result I want (ie an image with EXIF-data intact). I will update if I find out more.

ActiveState Perl DBI::ODBC Unicode Error

Using Perl on Windows I’m probably out begging for problems. Using 32-bit Perl on 64-bit Windows I probably deserve it. Reality however does have some needs that go above theoretical best practices.

Recently I ran into a problem with DBI::ODBC that I newly installed with Perl 5.16 on Windows Server 2008 (64 bit). Since Perl for ISAPI only works in 32 bit mode with IIS I naturally ran the 32 bit version of Perl.

All Perl-scripts where moved from our old 32-bit Perl 5.10 Windows Server 2003. They all worked great with one major exception: DBI::ODBC. We kept getting an unexpected encoding (unicode) from all our calls done by ODBC. Fortunately for us someone else had allready run into this problem.

It turns out that as of DBI::ODBC version 1.29 there was added support for unicode that “broke” expected response if one where not using unicode. After some digging into the problem with suggestions to rebuild DBI::ODBC (that I don’t even know how to do on Windows under ActiveState Perl) or encode/decode every variable I finally found what I thought was the easiest solution.

After each connection established with DBI::ODBC driver I added the flag “odbc_old_unicode” and set it to true. This makes all the subsequent calls act as they did before unicode support was added!

$dbh = DBI->connect('DBI:ODBC:MYSOURCE','USER','PASSWORD');
$dbh->{'odbc_old_unicode'} = 1;

Now I just need to find every occurence where a connection is established with ODBC in my Perl scripts… which reminds me that I am on a Windows platform and don’t have access to the “grep” command!

Note: after some digging (since I do not want to install any third party software on the servers) I found the FINDSTR command which was quite handy!

humans.txt – vi är människor

Sökmotorer på Internet har länge haft sin egen fil, robots.txt, på nästan varenda server. Nu föreslås att vi även lägger till en fil för oss människor, humans.txt!

Humans.txt kan innehålla text-information om vilka som hjälpt till att bygga webbplatsen i fråga. Filen placeras likt robots.txt i root-katalogen på servern.

Detta blir något jag kommer att titta på för varje ny sida jag skapar!

Att köra Word på en server

Att automatisera Word och köra det på en server för att enkelt skapa dokument utifrån innehållet i en databas kan vara ganska praktiskt. Jag har varit med om flera projekt där man tillämpat just detta. När man läser i Microsofts knowledge base så kan man nästan få intrycket att Microsoft inte tycker det är en riktigt lika bra idé. Detta trots att de tillämpar licensmodellen att om en servertjänst skapar Word-dokument så måste alla klienter som använder server-tjänsten ha en Word-licens.

Skrivet på rätt sätt kan Word dock med fördel användas på en server. Om man exempelvis endast använder förutbestämda mallar som fungerar på servern riskerar man inte att få in strulande macro eller andra olägenheter.

Refaktorisering av kod

Att refaktorisera kod är nog något av det tråkigaste man kan göra som programmerare. Allt ska fungera precis som tidigare (kanske någon prestandaskillnad) men hela strukturen ska i värsta fall skrivas om!

Just nu sitter jag med hemsk PHP-kod, skriven av en medelmåtta till programmerare, och refaktoriserar denna kod till att vara objektorienterad och effektiv. Koden ska vara vacker! Att skriva bra kod är verkligen ett hantverk.

Jag gillar hur ni tänker… (facebook app)

Jag programmerar just nu en Facebook-applikation. När jag nu sitter och gräver genom kod och data ifrån Facebook så fick jag syn på följande information som är ett utdrag ur användarinformationen från Facebook:

    [relationship_status] => Married
    [significant_other] => Array
        (
            [name] => ....
            [id] => 123
        )

Array. Jag gillar hur ni tänker.

Skicka formulär med “enter”

Jag stötte på ett lite udda problem idag. Ett formulär som tidigare haft en egen submit-knapp skickades nu istället med hjälp av ett javascript. Detta gjorde att möjligheten att skicka formuläret genom att trycka enter på en rad slutade fungera.

Tyvärr ville jag inte ha en submit-knapp längre utan ville fortfarande använda javascriptet för att skicka formuläret. Tyvärr var webbläsaren för smart för att luras av en dold-submitknapp. Jag ville inte heller ha en trigger på varenda fält i formuläret. Lösningen blev istället följande kodrader:

<form ... onsubmit="sendForm();">
...
<input type="submit" value="sök"
  style="background:white;color:white;border:none;">
</form>

Denna kod fungerar perfekt! Knappen syns inte (givetvis om bara om bakgrunden också är vit) och man kan fortfarande trycka enter i vilket input-fält som helst och formuläret skickas då via javascriptet!