(Svenska) Better Code på svenska!
Sorry, this entry is only available in Svenska.
Upgraded to WordPress 3.2.1
This site has been upgraded to WordPress 3.2.1 in order to be able to use the qTranslate plugin. Soon, I will add content in swedish content aswell. See Better Code in swedish.
Launched: New web for snofrid.com
I recently delivered a new web for Brf Snöfrid 1 at snofrid.com
I took this client because I was previously a member of the board at Snöfrid, and wanted to help out.
Snöfrid moved from a static web which was difficult to maintain, to a new web based on WordPress which is easy to maintain and adapt. Pretty, readable, SEO friendly URLs will also be beneficial.
This was delivered at only 75% of the estimated cost!
Also see my previous post about Brf Snöfrid.
Cheap Oracle virtualization
Summary
Use multiple Oracle instances in the same machine instead of multiple virtualized hosts in the same machine.
Intro
I read an article in Computer Sweden today where Kappahl couldn’t do virtualization of their Oracle databases because of expensive licence costs. (article in swedish) In this article, I would like to offer a simple and cheap option to Oracle virtualization.
Why virtualization?
Organizations want to virtualize their Oracle databases for many reasons, one being to reduce license costs. Other reasons include reducing hardware costs and making it easy to add new databases.
Simply put, hardware virtualization is basically about exchanging many physical servers for a single big server.
You may prefer the wikipedia definition of virtualization, but mine is short, sweet and simple.
The alternative solution
Instead of doing Oracle virtualization using VMWare or Oracle VM, you can install several Oracle instances in a single Oracle installation, in a single machine. This is not what people usually mean when they say virtualization, but you get many of the benefits this way, and it will reduce your Oracle license costs!
Pros
- Still easy to start/stop individual instances
- Still easy to add/remove individual instances
- Still easy to configure memory and disk usage per instance
- No need to learn/buy any virtualization technique
Cons
- All instances will run on the same Oracle binaries, meaning all will run on the same Oracle version (some may consider this a benefit, when you’ve reached it…)
- All Oracle instances will run on the same OS.
Real world experience
I have seen this work very well, especially for testing and development installations. Virtualization of databases in a production environment may not be as common, but there’s no reason it shouldn’t work there aswell.
I am for hire
If you want my help with your Oracle environment – don’t hesitate to contact me!
New client: Brf Snöfrid 1
Recently started working with my new client, Brf Snöfrid 1. Snöfrid is a housing cooperative in Fredhäll, Stockholm, Sweden.
The job involves moving DNS, migrating their current website to a new hosting provider and to a new technical platform on WordPress.
It’s a small job, but it will be quite valuable for the board members and the members of the cooperative of Snöfrid.
Follow betrcode on Twitter
Better Code is now on Twitter aswell. I will tweet on topics related to Better Code AB, technology, e-gaming and other business-related topics!
Follow Better Code on http://twitter.com/#!/betrcode
A small Twitter link has also been added at the top of this website.
Git and GitHub
I now have an account at GitHub and am starting to learn Git. Git is a free and open source, distributed version control system. Being used to Perforce, I will probably compare a lot to how Perforce works…
Yesterday I made my first (small!) contribution to another project (repository). Blackened Systems is building a website/system platform in Scala and MongoDB and I’ve decided to pitch in to learn these technologies. This morning my “pull request” was accepted and merged into “blackened-parent”. (https://github.com/blackenedsystems/blackened-parent/pull/1)
So far my impression of GitHub is that it feels like it can really make it fun to contribute to other projects!
You can follow Better Code (betrcode) at https://github.com/betrcode
Interested in a new version control system? Read about Git at http://git-scm.com/
Sick and tired of Oracles installation procedure? Try MongoDB! Unzip and run! http://www.mongodb.org/
Crisp consultant profile published
My Crisp consultant profile is now published on http://crisp.se/max.wenzin
It’s only available in swedish at this time. If you want an english version, check out my Linkedin page at 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!


