PHP Object creation from string

Ok. I wanted to create a abject from at string in php. Normally you would do it like following:


$obj = new $string();

But this didn’t work. I used a lot of time trying to rewrite it, but nothing. The thing was, that it worked at some other point in my script, so there wasn’t any meaning in it not working.

Then it occurred to me, that i was using namespaces, and that might be the problem.

So first i tried:

$obj = __NAMESPACE__."\\".$string();

that didn’t work. It seams that php don’t handle strings before object creation in this matter, so it didn’t create the string before trying to create the object.

However, following solved my problem:

$str = __NAMESPACE__."\\".$str;
$obj = new $str();

The conclusion must be, that PHP don’t handle current namespace when creating objects from strings. That might be a candidate for a bugrepport?

MongoDB iteration performance

So, the deal is that I just started using MongoDB, and think it’s great! well not unconditionally, but I really like the way of storing data.

The thing is, that i have a project, that is heavily dependent on relations, and, as known, MongoDB doesn’t support joins and stuff. I know it is possible build relations upon it, but I think i would kill performance completely, especially on serial many to many relations.

My Idea on this matter, was to save the relations in MySQL, and the data in mongoDB. In this way, MySQL would contain numbers obly, and would not likely have problems on performance, because much of the data fits in memory. MongoDB supports horizontally scaling, so exceeding memory doesn’t matter that much as new nodes may be added to improve performance.

And now to the subject on this post: If ID’s are saved in a MySQL database, a php object would have to extract the data from the mongoDB on it’s own. But on the other hand, if we only rely on mongoDB, we can extract all needed data in just one call, and dispatch it to the objects who needs it. This is clearly a subject to a performance difference, but how big? would it be better to just store all of it in MySQL? og mongoDB?

I tested out the difference from one call to extract data, and a call pr. object to extract the data. My result is as follows:


Inserting 10 elements
Elements inserted in 0.0025460720062256sec
iterating with one call
iterated in 0.00066900253295898sec
iterating with multiple calls
iterated in 0.019005060195923sec
sets: 10
calls: 10

Inserting 1000 elements
Elements inserted in 0.024579048156738sec
iterating with one call
iterated in 0.016160011291504sec
iterating with multiple calls
iterated in 0.080620050430298sec
sets: 1000
calls: 1000

Inserting 100000 elements
Elements inserted in 3.7242369651794sec
iterating with one call
iterated in 1.0703041553497sec
iterating with multiple calls
iterated in 9.8489198684692sec
sets: 100000
calls: 100000

as the results shows, it is roughly 9-10 times faster to extract all data at once, than the extract elements singularily. Normally no more than a few objects are needed for showing the requested page, so I might be able to live with this performance difference. Especially when it isn’t taken to account, the time it requires to fetch the same amount of data from MySQL.

This test haven’t taken the time to emulate joins in mongoDB to account. If somebody have something on this, you are very welcome to post it :)

some other ways of making the hybrid systems, could be to do a very big search query to mongoDB, which does something like (id0 OR id1 OR id2 OR … OR idn), this would probably be the solution, as some other searchterms often would have to be appended.

my test file is available from here

Tags:

IJVM Interpreter

IJVM is a subset of java created for only educational purpose. When we was tought to use it, I thought “why not make an interpreter”, so I did.

The downloadable package includes the source for the interpreter:

main.c

The main.c if the file to compile. this holds all the fileparsing and output stuff

iprtr.c

This file contains the interpreter methods. among other things the PC register, stack, initiasation and other stuff

instr.c

Here goes all the implemented instruction. if you implement some new, remember to address them in the initialise() in iprtr.c

extras.c

This is just some output functions. Those are only included if PERFORMANCE is set to 0, otherwise. if PERFORMANCE = 1, the interpreter will only output the final return

 

Tests

in the test lib, you can find some test bytecode file

idiv and imul is division and multiplication. the parameters are the second two values pushed on the stack (number 2 and 3 bipush).

The min takes two commandline arguments, and returns the lowes (./main min.bc 03 04 which returns 03). recCount.bc takes one commandline argument, and recurses the number of times specified (be aware of a very big stack here ;) ).

 

CLI

the are severel ways to use the program.

cat file.bc | ./ijvm -stdin args1 args2 . . .
./ijvm file.bc args1 args2 . . .
./ijvm

The first one reads bytecode from stdin, the second from specified file, and the 3 will prompt you for a file. note that there is no possibility of commandline arguments in the third.

the arguments are hexedecimal numbers, and are unsigned.

 

Compilation

To compile the program on a gnu/Linux platform, do following

gcc main.c -o ijvm

This will make executeable in same directory called ijvm, which is executed as following:

./ijvm . . .

Next time I have access to a windows based maschine with a compiler, I will make a windows exe file. The program uses only standard C library, so it should compile on any platform.

 

If you find any errors or missing stuff, write me, so I have the oppertunity the fix it :D

 

Download

 

Stack in C

The C library does not contain the stack datatype. I was in a situation were I needed the stack, so I had to implement it. It is not very hard, but I’d like to share what I did so other in my situation can get some hints.

firstly the stack requires a datatype, that contain a stackpointer, the max size of the stack (arrays has to be initiated to an absolute size in C, so this is needed for not loosing data because of overflow) and the actual container. Furthermore I have implemented three methods for using the stack: push, pop and isEmpty. There is also a method called stackResize. this is used to maintain the stack container, so it can expand.

This implementation is selfcontained and typedepended. There is no template systemin bare C, så we have to choose wich type the stack is of. It is possible to make it typeindepended, but this was out of my scope.

 

You can download the code: Download

Vietnam – Part 1

Dette er beretningen om Vietnam – del 1 . . .

Efter en træng nats søvn i Legazpi (byen ved Donsol) tog vi til Vietnam. Et fly fra Legazpi til Manila, og et videre til Ho Chi Minh i det sydlige Vietnam. Da vi ankom til Vietnam var klokken et godt stykke over midnat (jeg undre mig stadig over at jeg indrejste D. 22 marts, når nu det rent teknisk var D. 23 marts ;) ). Men i hvert fald var vi trætte. Tillige havde vi overskredet en tidszone, der gør at vi “mistede” en time (klokken havde været ca. halv to i filippinerne). Så vi gik ned og fanddt en taxa og blev kørt til et hotel, vi havde hørt nogle andre også skulle til. og skulle det ikke være nok med at menneskene havde ændret træk, og lød som en konstant diskussion, skulle vi også kun betale det halve for et super lækkert hotelværelse, end vi skulle for et guesthouse på filippinerne.

De næste par dage brugte vi i Ho Chi Minh. Vi så byen og besøgt Ku Chi tunellerne inden vi tog videre med fly til Nordvietnam. Nærmere bestemt Hanoi. Vi var steget på flyet i shorts og korte skjorter. Dette viste sig hurtigt at blive en kold fornøjelse. I Ho Chi Minh var der ca. 30 grader, i Hanoi 15. Så det var noget af en kold. Efter en nat det gik turen straks videre til Ha Long Bay. Efter en adskillige timer lang bustur, råbte vores blev vi sat af på motorvejen, og så måtte vi ellers gøre hvad vi kunne for at preje en taxa. Det lykkedes, og vi fandt fluks et turristcenter i byen dernede. Der lejede vi en båd der sejlede os til Cat Ba. Ha Long bay er en bukt med ca 4000 øer. Cat Ba er den største af dem.

Tags: ,

Donsol

Donsol er et af de steder man næsten er nødt til besøge, hvis man er i philippinerne i længere tid. De er kendte for deres hvalhajer, og det er så det ;)

Vi an kom til Donsol efter en lang tur med hele to fly og en lang køretur på bumbede veje, og efter noget tid var vi lige ved at tage afsted igen. Det er nemlig et sted der sker meget lidt, især når man kommer fra partyøen Boracay. Men vi var kommet for at opleve hvalhajer, og det skulle vi også komme til :) første dag foretog vi os ikke meget andet end at checke området ud og få noget mad på en nærliggende resteurant. Efter dansk standard var det meget billigt, billigere end Boracay, så det var fint nok. Vi smed ca. 50kr alt inklussiv, så det var lige til at overkomme :)

Dagen efter satte vi kursen mod turistcenteret, hvor vi skulle ud fra, og efter at have betalt en masse afgifter (det gør de sig rigtig meget i hernede) og set en lille film, kom vi med en båd ud. Så gik jagten igang. Skipper satte kurs mod en samling skibe lidt længere ude, og der blev vi smidt i vandet. Det var imidlertid sådan at der var nogle sikkerhedsregulationer, der gjorde at man maks måtte være 6 personer om en haj og ikke længere end 10 minutter osv. De blev på ingen måder fulgt. Her var det bare ned i vandet og kæmpe med alle de andre folk der lå i overfladen for at få et blik.

Men alt i alt nåede vi at se 4 hajer, hvorefter vi tog til selve Donsol. Der fik damerne massage mens Kristian og jeg hoppede i poolen. Det var super. Dagen Efter tog vi til Legazpi, hvor vi sov som sild i en tønde ;) Derefter satte vi kursen mod Vietnam.

Tags: , ,

Boracay

Dagen efter oplevelsen i Ayala valgte vi at tage til Boracay. Boracay er et område vi havde hørt om hjemmefra. Det skulle være et meget turistet sted, og de skulle have en rigtig god strand. Dette viste sig alt sammen at være ganske korrekt. Her var supermange mennesker. Især mange svenskere og tyskere. Dem fandt vi da også nogle venner blandt. Jeg fandt dog også ud af at filippinerne er det ideelle sted at dykke, og da “alle” andre havde dykkercertifikater og dykkede meget, bestemte vi os for et prøvedyk. Dette udvidede vi til hele certifikatet, og nu er vi certificerede PADI openwater divers. Det er en status der giver os “lov til” at dykke indtil 18m, dog ikke spicielle steder (vrag, grotter, osv.). Certificeringen betyder for os, at vi har et bevis for at vi kan dykke, når vi vil lege udstyr ved et dykkercenter.

På Boracay oplevede vi ikke spicielt mange kulturelle ting, det var mere fest og farver. Men det var der tilgængæld også meget af. Det var også her vi stødte på et par fra Danmark. Linke og Kristian kaldes de og de kommer fra Aarhus. Det skulle vise sig at blive et skæbnesvangert møde med dem, men mere om det senere.

Det var også mens vi var på Boracay at Tsunamien ramte østen. En situation der blev kørt lidt op i en spids af ikke navngivne personer (hey! der er andre end Janni og jeg med på dette tidspunkt), så det endte med at vi tog med nogle franskmænd med op til et hotel på toppen af mount loco (et lille bjerg på Boracay) Der sad vi og fik noget pizza og drak nogle øl, mens vi holdte nøje øje med situationen på nettet. Men som situationen blev initieret blev den sluttet – uden drama :D Det var dog en ganske hyggelig aften :)

Tags: , ,

Filippinerne!

Nu er det ved at være på tide at der kommer lidt nyt fra filippinerne på denne blog.

I Starten af marts måned år 2011, tog en veninde og jeg sammen til filippinerne for at komme ud og opleve verden inden det er for sent ;) I skrivende stund har vi ca. været afsted 20 dage, men er på trods blevet adskillige år ældre.

Vi startede vores tur med at tage flyveren fra CPH til Manila, der er filippinernes hovedstad. Der havde som sådan ingen planer, og det viste sig at blive fatalt . . . Vi kom til at sætte os ind i en “tilfældig” taxa, der med det samme begyndte at køre. Vi havde jo hørt lidt hjemmefra, og kigget på et kort, og kunne derfor ikke forstå hvorfor det skulle tage 2 timer at komme hen til det hostel vi havde besluttet os for i flyet. Så vi valgte at blive sat af det mest indbydende (i forhold til bykortet) sted, der var at finde. Dette viste sig at blive den dyreste overnatning vi endnu har haft. ~9600 Pesos for en enkelt nat (~1200kr) for os begge. Det er hvad der sker når man tager til rigmandsområdet Ayala :D Men ok, det var jo en oplevelse :)

Tags: ,

Nannejul.dk launch!

Så blev Nanne Jul’s online galleri smidt online.

Nanne Jul er en upcomming ung kunstner, der ønsker at promovere sin kunst online. Siden er tæt integreret med facebook, hvilket giver optimale muligheder for promovere hendes kunst.

Til højre ses et af hendes billeder. På websiden kan resten af hendes galleri findes.

Tjek siden ud her.

Alien Numbers

Google har i deres google code jam konkurrence lavet en opgave der, i korte træk, får ud på at omskrive fra et talsystem til et andet.

opgaven kan læses her

Den opgave har jeg lavet en løsning til.

Download