Monthly Archives: November 2013

Sweetpacks = cunts

Jeg har minimum 20 bruger, som skal have hjælp til deres computere. Det er bruger jeg har arvet, som alle har brug for at kunne arbejde hele tiden og over alt. Når jeg siger arvet, så er det fordi der følger en bruger kultur og (manglende) IT Politik med, der gør at de alle er administrator på deres maskiner.
Den slags leder sjældent til noget godt. Ikke et ondt ord om nogen af dem. Fantastisk kollegaer. De har bare ikke deres kompetencer i IT, og det er derfor jeg har det job jeg har.

Desværre er den slags brugere udsatte, og det er deres computere også.

I dag havde jeg en case, som irritere mig grænseløst. Det er svært at klandre brugere for noget, for det software vedkommende havde installeret er designet og bundlet til at forvirre. Kort sagt, endte vedkommende med et browserhijack. Hver side ny side blev startet op med noget der ligner Googles landing page en hel del, men det er ikke den. Her er tale om noget software, var ikke helt klar over hvilket, som var bundlet med noget af Sweetpacks pis software. Så alle start side blev henvist til mysearch.sweetpacks.com og så en tracking URL af en slags.

Jeg afinstallerede en Sweetpack updater service, fjernede search engine i Firefox og satte startsiden til at være google.dk. Påtrods af det, så var det stadig den hijack side man kom ind på, når startede en ny tab. Fucking irriterende, især fordi det æder min og brugerens tid. Jeg endte med at bruge ADWcleaner og den fandt overraskende mange ting. Ihvertfald har Sweetpacks (cunts), gjort deres for at sikre sig, at det ikke er så nemt at fjerne.

Den slags er malware. Det er lavet med ond hensigt. Ikke for at ødelægge, men for at hijacke din trafik, og redirect den, og vise dig flere reklamer, der opfordre dig til at hente endnu mere malware.

Der var om nogen der burde fjernes fra internettet, men Trine Bramsen (raketforsker), vil hellere bruger kræfterne på at få vores internet til at ligne det de har i Kina og Iran. Well done.

And Sweetpacks.com, if you cunts are vain enough to google yourself, then know there is a special place in hell for destructive people like you. I hope you burn

En rejse med MongoDB

Traditionelle SQL databaser, som MySQL, Postgresql og Microsoft SQL server, har fået en ny konkurrent. Skalerbarhed og Big Data får folk til at kigge efter alternativer. Folk løber tilsyneladende lidt for tit ind i problemer med at skaler deres SQL løsninger. Pludselig er deres applikationer vokset fra dem, og der skal skaleres op til mere data. Databaser kan blive så komplekse, at man hellere hakker noget spaghetti kode sammnen, for at løse problemet hurtigt
Derfor er NoSQL databaser noget der vokser og bliver mere populært.

Jeg har minimalt erfaring med Big Data og NoSQL. Big Data finder jeg uhyre fascinerende, og samtidig også skræmmende (men det er en anden post). Samtidig er jeg også et nysgerrigt menneske, når det kommer til IT. Jeg elsker at lege.

I mit nye job, er vi også løbet i nogle udfordringer med traditionelle SQL server. Derfor har vi valgt at bruger MongoDB til et projekt, hvor vi har meget udskiftelig data. Stort set bruger vi kun databasen som en container, indtil dataen ryger et andet sted.

Min umiddelbare oplevelse med MongoDB, er blandede. MongoDB er feature stærk, og har en ret simpel konfig. Vi fik sat en server hutigt op og fik den i brug på ingen tid, men vi skulle også bruge noget data sikkerhed. Traditionel backup virkede omsonst, da dataen i MongoDB max vil være der en uges tid, og så er den væk. Samtidig er det en mission critical service, som er afhængig af MongoDB.

Det vi så gjorde var, at lave vores stand alone MongoDB til Master / Slave. Det var ligetil. Der er master slave parameter i mongodb.conf.
Problemet her er dog, at vi ikke har noget fail over. Ryger master ned, så kunne vi ikke bare lige automatisk få en fail over.

Løsningen var dog ligetil. Et replica set. I sin apps connection string, kan man specificere flere servere, som kan bruges til fail over.
Kort fortalt består et replicaset, af en Primary, og så en flok secondaries. I vores setup har vi en primary og to secondaries. Vi har konstant real time backup af vores data, og skulle primary ryge ned, så vælger de to seconadies en ny primary, og vores app forbinder automatisk der til. Easy, ikke sandt?

Wrong.

Her er det hvor oplevelserne med MongoDB bliver EKSTREMT mudret. MongoDBs dokumentation er ekstremt mangefuld. Vi fandt et hav af guides til opsætning af replica set, og langt de fleste af dem var mangefulde. Det tog mig meget lang tid at få det til at fungere.

Men her kan jeg kort opsumere hvad vi gjorde for at få det til at fungere.
Vi installere vores primary MongoDB instans. I mongodb.conf sikre jeg mig, at auth = true, er udkommenteret.
Næste skridt er at forbinde til mongo


mongo
>
> use admin
switched to db admin
> db.addUser( { user : "admin", pwd : "kode", roles : "userAdminAnyDatabase" } )

Når det er gjort, kan du lave databaser som du lyster. Kommentere auth = true ind igen.

Næste skridt er at sætte secondaries op. Det er bare at installere dem. Her var det jeg oprindeligt løb i problemer, da jeg konfigurede dem med en administrator. Det er vigtigt, at de ikke har nogen locale database, når primary begynder at skubbe sin konfig ud.

For at Secondaries kan læse fra Primary, så skal de autoriseres. Der bruger vi keyFile. I en terminal skriv

openssl rand -base64 741

og kopiere det indhold i en fil (jeg bruger /srv/keyfile) og chown mongodb:mongodb på filen, og chmod 400. I mongodb.conf (på alle instanser) tilføjer du keyFile = /srv/keyfile
Dernæst, på alle instanser igen, tilføjer du replSet = mitreplset i mongodb.conf

Genstart alle instaner, så de starter op med keyfile og replset. Forbind til din primary, og initialiser replica settet

mongo > use admin
> db.auth('admin','kode')
> rs.initiate()

Dermed starter man sit replica set. Nu skal der tilføjes medlemmer. Det er EKSTREMT vigtigt, at de bliver tilføjet med DNS, og ikke IP.


> rs.add('secondary1.example.dk:27017')
> rs.add('secondary2.example.dk:27017')

Køb rs.status() på primary, og så vil du se, at dit replica set nu har tre members. Det burde du ihvertfald.

Det har taget mig virkeligt lang tid at få det her til at fungere ordentligt. Alt for meget dårlig dokumentation. MongoDB er spændende. Det virker som et ekstremt stærkt værktøj. Men det er ikke til alt. Vi har gang i nogle spændende projekter her, og det glæder jeg mig meget til at dykke mere ned i. Især ned i MongoDB.
Det starter