Lage indexer i mysql med MAMP

Jeg har ikke funnet noen måte å lager indexer på i Sequel Pro, og med det har jeg alternativet klart; i terminalen.

Antagelsen er at mysql kjører i MAMP på OSX (10.5.8).

Åpne terminalen.
Skriv inn

/Applications/MAMP/Library/bin/mysql -uroot -p

kvitter med root-passordet som ut-av-boksen er root.

Velg en database:

mysql> use tabellnavn;

Vis tabellene i databasen (fint å vite hva som finnes):

mysql> show tables;

Sjekk om tabellen har en index:

mysql> show indexes from 2009analyse_int;

Lag en index

mysql> CREATE INDEX minNye_index ON tabellnavn(kolonne_du_vil_lage_index_på);

Done.

PS – Note to self: Behovet for indexer dukket for min del opp når jeg skulle hente ut ca 75.000 rader fra en tabell over nettartikler, hvorav noen var duplikater. For å hente ut kun én linje per unike url gjorde jeg følgende spørring:

SELECT *, COUNT(unik_id) AS duplikat
FROM min_fine_tabell
GROUP BY unik_id
ORDER BY duplikat DESC;

Da kommer duplikatene (med antall større enn 1) øverst, følger alle som er unike.

Sequel Pro avløser CocoaMySQL

CocoaMySQL er en fantastisk liten klient til DBMSet mySQL. For Mac. På tross av at cocoamysql alltid fikk jobben gjort, så ser videreføringen i Sequel Pro ut som et steg opp.

Sequel Pro GUI

Sequel Pro GUI.

At CocoaMySQL hverken var fullt av fancy funksjoner eller revolusjonerende teknologier var aldri noe hinder for arbeidsflyten for oss som stort sett jobber med databaser for web. Sequel Pro følger i samme fotspor. Det er først og fremst GUIet som er oppdatert til dagens standard for Mac, så vell som mindre endringer som nærmest likner bugfixer. Personlig er det bare muligheten til å kommentere tabellene som jeg virkelig savnet.

(som er uendelig nyttig hvis du lagrer verdier av typen verdiskalaer, f.eks. 0 – 10 hvor 10 er admin og tallene nedover beskriver ulike tilgangrettigheter, eller tallskalaer som kategoriserer variabler i et analyseopplegg).

En av de viktigste egenskapene til en SQLklient, er at den er enkel å bruke og sette opp. Typisk kjører jeg en lokal server på laptop’n min, og da stort sett en ferdig pakke ala MAMP. At det tar mindre enn 2 minutter å sette dette opp er målet, og dette viderefører Sequel Pro. Se f.eks. instruksene for MAMP/XAMP her.

Jeg snublet over Sequel Pro da cocoamysql, av en aller annen grunn, tok urimelig mye systemresurser i et stort datasett jeg jobber med. Sequel Pro kjører som det skulle være det neste på skjermen her, noe som er langt fram sannheten. At små detaljer som redigering av innhold i celler, reorganisering av tabellstrukturer og bedre håndtering av tabellenes metadata er betydelig smoothere enn før gjør opplevelsen sammenliknbar med forgjengeren, men samtidig et skritt opp. Jobber du med mysqldatabaser på mac, så er Sequel Pro absolutt verdt å ta en titt på. Open source er det også.

Cron-jobber

– Resultater etter prøv og feil metoden.
Å kjøre cron-jobber er et spennende skritt videre fra å kun scripte for kode som trigges av brukeres aktivitet. Med cron-jobber kan prosesser kjøres automatisk på tidspunkt etter dine preferanser.

For orden skyld;
jeg har har et webhotell hos subsys.no. Cronjobber er en tjeneste som sjeldent kommer som standard hos webhotelltilbydere.

Å sette opp cronjobber fordrer at du kan logge deg inn på serveren via kommandolinjen (SSH), og videre redigere innstillingene for oppsettet i terminalen. For meg var det ikke intuitivt hvordan dette skulle gjøres i praksis, så her er hvordan jeg gjorde det hos subsys.

Koble til med SSH.

ssh -L 8888:server10.subsys.no:3306 brukernavn@server10.subsys.no

Kvitter med passord.

Så skriver du inn crontab -e

[brukernavn@server10 ~/mevi]$ crontab -e

-e står for «edit», du kan lese mer om handlingsrommet ditt her.

Hos subsys.no kjører de freeBSD, og der åpnes contab-filen i en «editor» i terminalen, denne heter nano(?). Du kan skrive inn tekst i filen (som er helt blank i utgangspunktet og som ikke vises/finnes via en ftp-klient), lagre, bla, osv. Hva du kan gjøre listes under det som i første omgang er en helt hvit terminal.

Rediger filen etter mønsteret «alle» guider for crontab gir, du kan f.eks. ta wikipedias tekst om saken som utgangspunkt.

$HOME fungerer fint i stede for å skrive inn hele adressen som er noe slikt som home users  brukernavn

$HOME fungerer fint i stede for å skrive inn hele adressen som er noe slikt som /home/users/brukernavn/.

Her er et eksempel på mine redigeringer:

MAILTO=gjett@stavelin.com
30 * * * * $HOME/pythonscript/python.py
0 0 * * * $HOME/phpscript/phpfil.php

MAILTO er en glimrende sak som sender deg en rapport på mail hver gang oppgaven utføres. Den er særlig nyttig når du setter dette opp for første gang, for å sjekke at ting fungerer som det skal, event hva som ikke fungerer.

Den første oppgaven jeg satt opp var å kjøre et pythonscript. Husk

#!/usr/local/bin/python

i starten av filen, slik at scriptet vil kjøre. Husk også å sette rettighetene på filen slik at den blir kjørbar (executable), med

chmod +x filnavn.py

Slike ting avslører feilmeldingene som jeg fikk på mail fram MAILTO-biten.

Når det kommer til tidsaspektene hvor når disse kommandoene skal gå av, så finner du også mye dokumentasjon rundt om. Selv hadde jeg en hvis glede av denne crontab kalkulatoren. Kodene jeg bruker i eksemplet over leser du slik:
30 * * * * betyr det 30. minuttet, hver time, hver dag, hver måned, alle ukedager. aka hver eneste time, 30 minutter over hel. Altså 24 jobber i døgnet.
0 0 * * * betyr det 0. minuttet, den 0. timen hver dag, hver måned, alle ukedager. aka første minutt den første timen i døgnet. Altså ved midnatt hvert døgn.

Håper dette er nyttig for noen, det hadde vært det for meg for noen dager siden.

Fra tab- til kommeseparerte verdier

Du har en fil med tabseparerte verdier, og ønsker å ha den som kommaseparerte verdier. Det hadde i alle fall jeg i dag, og dette er slik jeg løste problemet.

Åpne TextMate, marker alt, og høyreklikk. Velg ‘Filter Through Command..’ og bruk følgende snippet:

tr '\t' ','

Jeg valgte ‘input: selection’ (fordi jeg markerte alt først) og ‘output: Create New Document’, for å være på den sikre siden.

Slik ble alle tab-karakterene (hvordan visualisere en ikke-alfanumerisk karakter?) konvertert til komma (,)

Konamikoden i javascript

Den godeste tanketom kvitret i dag at konamikoden også fungererfacebook. Jeg kan ikke si jeg ble veldig imponert over easteregget som ble avduket, men likevel: nerdete moro.

Facebook er jo ikke aleine om å bruke konamikoden på nett, så jeg antok at det er lett å finne ferdig javascriptkode for å få til dette på egen side, og det var det:

    if ( window.addEventListener ) {
            var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
            window.addEventListener("keydown", function(e){
                    kkeys.push( e.keyCode );
                    if ( kkeys.toString().indexOf( konami ) >= 0 )
                            window.location = "http://ejohn.org/apps/hero/";
            }, true);
    }

Denne snutten er btw fra jquerys webside. Har kun testet i Firefox.

Da jeg ikke vet helt enda hva jeg selv ville skule bak konamikoden på stavelin.com har jeg kun lagt den inn på startsiden stavelin.com slik som vist i eksemplet over.

Hva ville du ha brukt konamikoden til på din side?