Better Code på svenska!
Jag har nu börjat översätta denna sajt till svenska och kommer framöver att skriva artiklar på svenska och/eller engelska. Under en övergångsperiod kommer det förekomma en del engelska på de “svenska” sidorna – jag ber om ursäkt för detta.
Tyvärr är denna artikel enbart tillgänglig på English.
Lanserat: Ny webb för snofrid.com
Jag byggde och levererade nyligen en ny webbsajt till Brf Snöfrid 1. Se snofrid.com
Anledningen till att jag tog på mig detta uppdrag är för att jag tidigare satt med i styrelsen för Brf Snöfrid 1, och jag ville gärna hjälpa till.
Snöfrid har nu flyttat från en statisk webbsajt som var svår att underhålla, till en ny webbsajt som körs på WordPress. WordPress är lätt att underhålla och anpassa, utan några tekniska förkunskaper. Snygga, läsbara, sökmotorvänliga URL:er skadar inte heller…
Detta levererades till endast 75% av den uppskattade kostnaden! Alla IT-projekt drar inte över budget…
Se även mitt tidigare inlägg om Brf Snöfrid.
Billig Oracle-virtualisering
Sammanfattning
Använd flera Oracle-instanser i samma maskin istället för flera virtuella maskiner i en fysisk maskin.
Introduktion
Jag läste en artikel i Computer Sweden idag som handlade om att Kappahl inte kan virtualisera sina Oracle-databaser pga höga licenskostnader. I denna artikel erbjuder jag ett enkelt och billigt alternativ till virtualisering av Oracle.
Varför virtualisering?
Organisationer vill virtualisering sina Oracle-databaser av många skäl. Ett av de skälen är att minska licenskostnaderna. Andra skäl är att minska hårdvarukostnader och att göra det enklare att lägga till nya databaser.
Hårdvaruvirtualisering handlar, enkelt uttryckt, om att ersätta många fysiska maskiner med en enda stor fysisk maskin.
Om du inte gillar min korta definition kanske du gillar wikipedias definition av virtualisering.
Den alternativa lösningen
Istället för att virtualisera Oracle mha VMWare eller Oracle VM, kan du installera flera Oracle-instanser i en enda Oracle-installation, i en enda maskin. Detta är inte vad folk normalt menar när de talar om virtualisering, men du får många av fördelarna på detta sätt och det minskar dina licenskostnader för Oracle!
Fördelar
- Fortfarande enkelt att starta/stoppa enskilda instanser
- Fortfarande enkelt att lägga till/ta bort enskilda instanser
- Fortfarande enkelt att konfigurera minne och diskanvändning per instans
- Inget behov att lära sig/köpa någon virtualiseringsteknik
Nackdelar
- Alla instanser körs på samma Oracle-binärer vilket innebär att alla kör på samma Oracle-version (en del ser detta som en fördel, när du väl nått dit…)
- Alla Oracle-instanser körs på samma OS
Erfarenhet från verkligheten
Jag har sett detta fungera mycket bra, särskilt i test och utvecklingsmiljöer. Virtualisering av databaser i produktionsmiljöer kanske inte är lika vanligt, men det finns inget sk’l till varför det inte skulle fungera där också.
Anlita mig
Om ni behöver min hjälp med er Oracle-miljö – tveka inte att kontakta mig!
Ny kund: Brf Snöfrid 1
Jag började nyligen arbeta med min nya kund, Brf Snöfrid 1. Snöfrid är en bostadsrättsförening Fredhäll, Stockholm.
Uppdraget inkluderar flytt av DNS, migrering av nuvarande webbsajt till en ny hosting-leverantör och till en ny teknisk plattform på WordPress.
Det är ett litet jobb, men det kommer vara värdefullt för styrelsemedlemmarna och medlemmarna i Brf Snöfrid.
Följ betrcode på Twitter
Better Code finns nu även på Twitter. Jag kommer twittra om saker relaterat till Better Code AB, teknik, spel-branschen och andra affärsrelaterade ämnen!
Följ Better Code på http://twitter.com/#!/betrcode
Git and GitHub
Jag har nu ett konto på GitHub och har börjat lära mig Git. Git är ett gratis, open-source, distribuerat system för versionshantering. Eftersom jag är van vid Perforce kommer jag sannolikt jämföra en hel del med hur Perforce fungerar…
Igår gjorde jag mitt första (lilla!) bidrag till ett annat projekt. Blackened Systems bygger en webb-plattform i Scala och MongoDB och jag har beslutat mig för att hjälpa till för att lära mig dessa tekniker. I morse accepterades min “pull request” och mergades in i “blackened-parent”. (https://github.com/blackenedsystems/blackened-parent/pull/1)
Mitt intryck av GitHub hittills är att det gör det mycket roligare att bidra till andra projekt!
Du kan följa Better Code (betrcode) på https://github.com/betrcode
Intresserad av ett nytt system för versionshantering? Läs om Git på http://git-scm.com/
Sjukt trött på Oracles dåliga installationsrutin? Prova MongoDB! Packa upp och kör! http://www.mongodb.org/
Konsultprofil på Crisp
Min konsultprofil på Crisp är nu publicerad på http://crisp.se/max.wenzin
Se även min Linkedin-sida på http://se.linkedin.com/in/maxwenzin
Expekt Release 3.6
Expekt.com was updated to version 3.6 this morning! One of the changes is that pretty, SEO-friendly URLs have been introduced on the odds and sports event pages, and also in the content management system.
Take a closer look at the URL.
As you can see, the URL now contains the league name. This improves usability and search engine optimization (SEO).
If we click one of the sport matches, we will see that those URLs are now more readable aswell.
Take a closer look at the URL of the match page.
It now contains both the league name (“Eng. Premier League”) and a description of the sports event, in this case the two team names: “Everton – Manchester City”.
In a coming post, I will write about the techology behind these pretty URLs, why they are constructed the way they are, and what to think about when building SEO friendly URLs into your own web applications.
I will also be monitoring how Google will index these new URLs and make a special note if Google picks up just the english versions, or other languages aswell. My guess is that it will only index the default language (english) until Expekt has implemented language subdirectories.
References
When writing PLSQL in the Oracle database, you define parameters to a function/procedure like this:
FUNCTION getFullName(iUserId IN INTEGER) RETURN VARCHAR2 IS BEGIN --TODO: Implement this RETURN ""; END getFullname;
Instead of writing it like that, consider using a table.column definition as type for your parameter! This way, if you change your table, you will not also have to change your code!
Example:
FUNCTION getFullName(iUserId IN SIGNUP.ID%TYPE) RETURN VARCHAR2 IS BEGIN --TODO: Implement this RETURN ""; END getFullname;
Now, if you for some reason change the ID column in the SIGNUP table to be something other than INTEGER, you can leave the code as is! Much more DRY!


