Simple ajax based autocomplete in jquery

Starting to abandon prototype.js to use what seems to be the new standard jquery – one of the first things I want to do, is to make some autocomplete fields fetching values from a data base.

I have made an input field with the id sampletype. All the examples I found was quite more complicated than what I needed, e.g at jqueryui. But when I managed to remove all functionallity I don’t need, then the javascript goes:

$(function() {
url="http://url.to.my.server/ajaxserver.php"
$("#sampletype").autocomplete({
source: function(request, response) {
$.ajax({
url: url,
data: {
fetchnames: "sampletype",
pattern: request.term
},
dataType: 'json',
success: function(data) {
response(data);
}
})
}
});
});

The fetchnames and pattern parameters are defined by my backend application. The script just fetches all unique names from a table and returns them as a jsonencoded array. The css needs to be fixed a bit to make things look good, I am still not finished there.

The main part of the backend is as follows. This is written for postgres, but most of it should be similar for other databases, e.g. mysql.

// $dbh is set up connected to my server

/*
must have done a check that $table really is a valid table, this is a classical possible SQL-injection trap...
(a prepared sample must know on which table(s) to operate, so this must be build up as a string

$table - from $_GET['fetchnames']
$pattern - frin $_GET['pattern']
*/

$sql="select name from $table";
$sql.=$pattern?" where lower(name) like lower(:pattern)":'';
/*
lower() to make a case insetensive search, may not be needed or be different on other databases
like - to search anywhere within a string, may be different for other databases
*/
$sql.=" order by name";
$sqlh=$dbh->prepare($sql);
if($pattern){
$pattern="%$pattern%";
// searchpattern may be different
$sqlh->bindParam(':pattern',$pattern);
}
$sqlh->execute();
$data=$sqlh->fetchAll(PDO::FETCH_NUM);
/*
$names is a simplified version of $data - as needed in the javascript
*/
foreach($data as $i){
$names[]=$i[0];
}
header('Content-type: application/json');
print(json_encode($names);

Posted in Data, Diverse | Comments Off on Simple ajax based autocomplete in jquery

Julemarkedsbaking 2013

I utgangspunktet brukte jeg følgende oppskrift:

100 g linfrø
100 g helkorn hvete
Hell over 7.5 dl kokende vann. Bland sammen og la dette stå i minst to timer
Etter to timer, sett til
5 dl lunkent vann (hele blandingen bør holde ca 35 grader)
1 ss salt
0.5 dl olivenolje
200 g grov sammalt rug
200 g grov sammalt spelt
smuldre i 50 gram gjær
Rør sammen og sett til siktet hvete til deigen får en relativt fast konsistens
La deigen heve ca 45 minutter.
Bak ut til 6 brød (hvert blir på 500 – 560 gram)
La brødene heve i ca 45 minutter
Stekes så 45 minutter på 220 grader over/undervarme (evt 200 grader varmluft)

Når jeg baker til julemarkedet safer jeg litt med blant annet å bruke mindre grovt mel for å få det til å heve seg raskere og bedre. På et tidspunkt gjorde jeg en feil og kom i skade til å sette til 400 g av hver grov sammalt rug og spelt. Disse brødene virket svært bra, så dette ble gjentatt senere som såkalte “dobbeltgrovt” brød.

Hvordan lager man 60 brød på en dag på et vanlig kjøkken?

Den begrensende faktoren er stekeovnen, det går inn 6 halvkilos brød av gangen der, så om jeg kan klare å ha et nytt brett med brød klart hver gang et er ferdigstekt, kan den utnyttes optimalt. I og med at forhevingstiden, etterhevingstiden og steketiden er den samme, gjelder det bare at det ikke er for mye arbeide på hvert trinn. Jeg starter kvelden før med å lage klar tre lin/helkorn blandinger, disse kan fint stå over natten. På markedsdagen begynner jeg da med en av dem, setter til mel, salt, gjær og olje og setter den deigen til forheving, umiddelbart etterpå setter jeg en ny lin/helkorn blanding,som dermed blir brukt tre runder senere. Rett før den første deigen er klar til utbaking, setter jeg den neste, så den kan forheve, mens den første etterhever. Med å jobbe litt effektivt, kan jeg med dette utnytte stekeovnen optimalt. Etter noen runder, har jeg da tre lin/helkornblaninger stående, en deig til forheving, et sett brød til etterheving og en runde i ovnen.

Posted in Diverse, Mat | Comments Off on Julemarkedsbaking 2013

Fudge

– eller fløtekarameller

Basert på oppskrift fra Nestle … Bruk et steketermometer som kan vise opp til ca 120 grader

410ml konsensert melk (1 boks vikingmelk)
150ml melk
150g sukker (helst brunt demerarasukker)
115g smør
eventuelt: ca 120 gram mandler / peanøtter / pistasjnøtter (i alle fall usaltet!) eller tørket frukt.

Bland sammen kondensert melk, vanlig melk, sukker og smør. Varm opp under opprøring, helst i en non-stick gryte. Blandingen vil begynne å koke ved ca 104 grader. Etter å ha kokt en stund, tykner den, Hele blandingen må varmes opp til 118 grader, flytt termometeret litt omkring.

Når det er varmet opp til 118 grader, bland i eventuelle hakkede nøtter. Ta av varmen og fortsett å røre i 5 – 10 minutter til massen har blitt fastere. Hell over massen i en form ca 20×30 cm kledt med bakepapir. La kjøle ned. Når den kan håndteres, skjær opp i passende store biter. Eventuelt kan den overtrekkes med sjokolade når den er kjølt ned. Den er i så fall greiest å dele opp før sjokoladen er helt kald.

Dersom massen ikke blir fastere når den kjøler ned, har den ikke blitt varmet opp nok. I så fall sett den over igjen og varm opp på nytt til 118 grader.

Dersom man ikke har steketermometer, kan man bruke “karamellprøven”. Slipp en dråpe av massen oppi kaldt vann. Dersom den lager en pen dråpe og ikke løser seg opp skal massen være ferdigkokt, men erfaringsmessig kan det være at det trenges mer oppvarming etter at “karamellprøven” er bestått.

Posted in Julekaker | Comments Off on Fudge

Julebakst

Det er vel stadig litt tidlig å begynne med julebaksten, men det begynner fakstisk å bli på tide å planlegge julebaksten. Det er jo i og for seg bare å gjøre det man gjorde året før,men allikevel alt skal på plass..

De obligatoriske her i huset er (i prioritert rekkefølge)

Og dessuten:

Jeg har ikke hatt noe god mandelkvern på en stund, da blir det dårlig med marsipan og er det ingen marsipan, blir det heller ingen St. Gallen Biberle…

For å få gjort alvor av dette, trenges

620g honning
4.7kg mel
17 g hjortetakksalt
snaut 3 g pottaske (kaliumkarbonat) (1 teskje)
12g natron
40g kanel
12g nellik,
67g ingefær,
1g allehånde,
1g muskatblomme
1/2 ts peppermynteolje
50 gr ristede mandler
75 gr sitronat eller apsikat
skall av 1/2 sitron
12g malt koriander
5g kardemomme
6g pulveriserte pommeransskal

2.4 kg sukker
600 g siktet melis
10 egg
1 eggehvite
3/4 dl vikingmelk
860 g smør
6 dl kremfløte
20 dråper sitronsaft

Bare å gå og handle…

Posted in Diverse, Julekaker, Mat | Comments Off on Julebakst

Vedredningsaksjonen

Det hjørnet av samvittigheten som er innstilt på ressursutnyttelse og vintervarme har slitt en stund nå. Tidlig i sommer felte jeg noen trær, i første omgang for å få tilbake noe lys og utsikt i hagen, men også med en svært klar tanke om at dette skulle bli vinterved om en vinter eller to. Sommeren var jo etterhvert veldig varm og tørr, så jeg hadde ikke så vondt av stokkene som lå i et lite reis, men det ante meg jo at det måtte snu en gang og flere netter har jeg ligget og hørt på regnet ute og lurt på hvorfor i alle dager jeg ikke fikk tatt meg av veden forrige helg heller. Så kom neste helg, og det var stadig prosjekter merd stort ferdigstillelsespress, enten fra familien eller fra årstiden. Og reiset lå der og jeg var egentlig glad for at jeg ikke hadde barket noe da jeg felte trærne, men den gnagende frykten for at denne veden skulle ende opp som tilsvarende reis hadde gjort tidligere, som kompost og fyllmasse krøp lengere og lengere opp i bevisstheten.
Ved

Helt til siste helg. Med litt engstelige tanker fikk jeg ryddet plass til en ny vedstabel og koblet opp kappsagen. Noen timer senere var fasiten klar. Jeg hadde en ny halv kubikkmeter eller noe med blandingsved,lønn, villmorell og litt hegg. Da jeg kappet dukket det opp nydelige lyse snittflater. Med noen få kuldegrader var veden så lettkløyvd at den omtrent sprakk av at jeg så litt hardt på den og kubbene gikk i bakken med løyden av en litt dårlig stemt xylofon. Det må fortsatt fylles opp med mer, men så langt er det lovende materiale for neste fyringssesong.

Posted in Hage | Comments Off on Vedredningsaksjonen

connecting nRF24L01 to arduino through a ribbon cable

(image: geeetech)
If connecting through a standard ribbon cable, the inner and outer pins are switched so that 1 <-> 2 etc.

name pin
rf24
pin
uno
Vcc 1 3.3V
Gnd 2 gnd
CSN 3 D7
CE 4 D8
MOSI 5 D11
SCK 6 D13
IRQ 7 n.c.
MISO 8 D12
Posted in Diverse | Comments Off on connecting nRF24L01 to arduino through a ribbon cable

Dnb i farta

Dnb vil ta sin del av julehandelen og sender ut gode tilbud:

“Nå kan du øke kreditten med 30 000 kroner på kortet ditt
Enkelte måneder er mer krevende økonomisk enn andre, og da er det praktisk med en fleksibel kreditt. Nå gir vi deg mulighet til å øke kredittbeløpet.

Du vil automatisk øke kredittrammen din med 30 000 kroner på ditt Leve MasterCard om du takker ja til dette tilbudet. Tilbudet er gyldig til 6.desember 2013.

Husk at du med Leve MasterCard kan få saldo via SMS eller kontofon på 04800. SMS-tjenester kan du sette opp her i nettbanken.

Priseksempel Leve Mastercard
Nom.rente 18,60 % / eff.rente 27,26%, 15 000 kroner o/12 måneder. Totalt 16 819 kroner. Prisen er per 01.01.13 og kan endres.
Ja takk, jeg vil øke kredittrammen med 30 000 kroner på mitt Leve MasterCard ”

Det er jo interessant at det eneste svaralternativet er “Ja takk” – “Jeg kjenner min økonomi og kunne ikke drømme om å potensielt øke kredittkortgjelden” er ikke noe alternativ. Dnb kjenner nok min økonomi vel så godt som jeg gjør selv og de vet at de gangene jeg har av forskjellige mer eller mindre gode grunner har makset ut kredittkortet har jeg brukt lang tid på å betale tilbake. Men selvfølgelig, det er jo glimrende for dem – ikke noe er bedre enn å kunne skrape inn fra kundene med 27.26% effektiv rente.

Posted in Diverse | Comments Off on Dnb i farta

Eplepresseloggen

En av verdens kjedeligste bloggposter, men jeg liker å ha oversikt…

2014 : 80 liter
2014 : 30 liter (ca halvparten av eplene fra andre)
2013 : 69 liter
2012 : 30 liter
2011 : 57 liter
2010 : 50 liter
2009 : 38 liter
2008 : 88 liter (mye epler fra naboer)
2007 : 12 liter
2006 : 83 liter

Posted in epler | Comments Off on Eplepresseloggen

Create GeoJSON in php

GeoJSON is a text format for encoding various geographical structures. I have a large number of point data with various extra information stored in a postgresql data base. I fetch all the data into an array in php, using PDO::FETCH_ASSOC, that is each row that has been fetched is an item in a numerical array, for each row, the various fields are coded as an associative array, so I have a structure like

Array
(
    [0] => Array
        (
            [id] => 210
            [name] => Sellafield
            [lat] => 54.43
            [lon] => -3.52
            [type] => Reprocessing plant
            [country] => Great Britain
        )

    [1] => Array
        (
            [id] => 177
            [name] => Dounreay
            [lat] => 58.57
            [lon] => -3.73
            [type] => Reprocessing plant
            [country] => Great Britain
        )
)

Now I want to use the lat and lon field to create the coordinate fields in GeoJSON and store the rest of the information as properties. Having the dataset stored as $dataset, I run the following code

$minlat=100;
$maxlat=-100;
$minlon=400;
$maxlon=-200;
foreach($dataset as &$item){ # Uses a pointer to refer to $item, so that changes are reflected in $dataset
   $item['geometry']['type']='Point';
   # Must make sure the coordinates are stored as numbers, not strings      
   $lon=$item['lon']*1;
   $lat=$item['lat']*1;
   $item['geometry']['coordinates']=array($lon,$lat);
   $minlon=min($minlon,$lon);                                                                                    
   $maxlon=max($maxlon,$lon);                                                                                    
   $minlat=min($minlat,$lat);                                                                                    
   $maxlat=max($maxlat,$lat);                                                                                    
   unset($item['lat']);
   unset($item['lon']);
   foreach($item as $k=>$v){  
      # Don't want to mess with geometry as it is already set
      # Id should also be set directly.
      if(!($k='geometry' || $k=='id')) {
         # Must make sure that numeric values are correctly handled
         if(is_numeric($v)?$v*1:$v;
         $props[$k]=$v;
         unset($item[$k]);
      }
    }                                                                                                      
    $item['type']='Feature';                                                                          
    $item['properties']=$props;
  }
  $dataset=array("type"=>"FeatureCollection","features"=>$dataset);
  $dataset['bbox']=array($minlon,$minlat,$maxlon,$maxlat);
  # Defining crs for WGS84 lat/lon
  $dataset['crs']=array("type"=>"name","properties"=>array("name","urn:ogc:def:crs:EPSG::4326"));  
$json=json_encode($dataset);
Posted in Diverse | Comments Off on Create GeoJSON in php

Eplelogg 2013

Eplepressingen er i gang igjen, nå med nyinnkjøpt kvern

13. oktober
12+16 kg james grieve presset til 15 liter juice

27 oktober
32 kg James Grieve presset til 19 liter juice
8 kg James Grieve + 8 kg torstein 9 liter juice,

17 kg torstein (veiefeil) presset til 9 liter juice.

9.november
Siste rest av Torstein + noen andre rester:

16 kg torstein ble snaut 8 liter juice
16 kg torstein + lagret aroma, snaut 9liter juice

Avslutter årets sesong med 69 liter juice fra 127 kg epler. Lagrer ca 20 kg til Mye stort, spesielt på aroma og torsten. En god sesong!

Helt klart dårligere utbytte fra torstein enn fra james grieve. Fant også ut at pakker på 5 kg er i meste laget for pressen. Regner med å ta en eller to runder med torstein senere, muligen også en runde med aroma som ble plukket for et par uker siden.

Posted in epler | Comments Off on Eplelogg 2013