About
fv_2007
Agile innovative developer with deep insight into lots of platforms, technologies and protocols. Absolute “early adopter” in Web 2.0 technologies and more. Large professional network and eagerly talking about architecture, strategy, design patterns, restful ressources, object-oriented thinking and modeling languages such as PML. Special interest in programminglanguages constructs, knowledge on languages like Smalltalk, Erlang, Java, Clojure, Scala, Ruby... read more
Comments
Language

Finally back on Mandriva Linux January 30, 2009 08:33 over 3 years ago

Endelig er jeg tilbage på Mandriva Linux distribution efter seks lange måneder med Ubuntu Linux distribution som operativsystem. Mandriva Linux PowerPack 2009 er i forhold til Ubuntu “rock stabel” og langt mere venligsindet forstået på daglig brug og parathed.

Siden 2000 har jeg været Platin hos Mandriva og har hele tiden været opdateret med den nyeste software med mulighed for at kommentere og specificere nye tiltag til mandriva udviklingen. Jeg fik dog lyst til at prøve en anden distribution da de gik over til årlige udgivelser. Ubuntu har været behæftet med alt for mange fejl og mangler men det værste er dog at den er ustabilt.

Ubuntu er dog nem og logisk, nok bedre for begyndere på Linux platformen. Den har en lækker brugergrænseflade og masser af processer som scanner for USB, kamera og andet desktop pop. Mandriva Linux er lidt mere basic i sin bruger interaktion, lidt mere håndarbejde men den er stabil og gennemtestet som en helhed inden man sender den på gaden. Mandriva fås som en samlet pakke der føles færdig og gennemført distribution. PowerPack versionen ligger som standart på en DVD med 4.3 GB og ca. 4400 applikationer.

Installation

Mandriva kan installeres mens man ser TV. Alting findes og sættes op uden problemer. Efter installation er det første man skal at konfigurer de medier hvorfra systemer skal hente opdateringer og ekstra applikationer. Det foregår let gennem drakconf men kan også bruge easyurpmi Dernæst skal jeg blot installere og starte de services og processer jeg almindeligvis benytter i min hverdag.

For mig er en typisk hverdag med “cross platform” hovri Mac OSX er mit fortrukne desktop miljø og Linux på server siden. For at dele dokumenter mellem de forskellige platforme bruger jeg ”Dropbox”:www.getdropbox.com Desværre har den en afhængighed til Gnome/Nautilus miljøet mens jeg foretrækker KDE. Derfor må man downloade en særlig pakke. Når filen er udpakket kan starte processen med dropboxd. Hvis man overlader starten til KDE’s autostart kommer den lille fine dropbox ikon frem i opgavelinjen og alt er hocket op.

$ wget http://www.getdropbox.com/download?plat=lnx.x86
$ tar xzfv dropbox-lnx.x86-0.6.416.tar.gz
$ ~/.dropbox-dist/dropboxd

Firewall

Mandriva kommer med Shorewall Det er en slags wrapper over iptables og det virker perfekt. Man skal lave de første regler (rules) hvis man vil logge ind over ssh(22). Den er hermetisk lukket fra starten men man kan nemt ændre/tilføre en regel i /etc/shorewall/rules.drake.

GIT Fast version control system

Git er et opensource, distribueret versionsstyringsystem skrevet af Linus Torvalds. Min opsætning skal have et “central repository” placeret på server og flere “distrbuted repository”(locals) på mine udviklingsmaskiner. Opsætningen af Git remote server er nemt. Den metode jeg benytter er at oprette en bruger “git” med en hjemmemappe hvori alle repositories vil blive gemt. På den måde kan jeg udgive ssh public keys til evt. committere uden at slække på sikkerheden.

$ ssh root@server
$ urpmi git-core
$ adduser git
$ exit
$ ssh git@server
$ mkdir project.git
$ cd project.git
$ git --bare init

Bemærk at remote repository er post-fixed med .git og at man bruger “bare” optionen. Git repository behøver ikke have lokale kopier af .git biblioteket, derfor kan man med “bare” optionen fortælle Git skal gemme binary objekter.

På client siden kan jeg lave et nyt Git projekt:

$ cd ~/projects/project
$ echo “ log/*.log \n tmp/**/* \n .DS_Store \n ” >> .gitignore
$ git init
$ touch README
$ git add README
$ git commit -m 'commit project readme file'
$ git remote add origin git@server:project.git
$ git push origin master

Eller hvis du allerede har et eksisterende projekt kan du clone det med:

$ git clone git@odin:project.git
$ edit 
$ git push 

Du kan få code completion til Git hvis du kan finde “.git-completion.bash” på din Linux box. Den skal flyttes til hjemmebiblioteket og tilføre en linje til sin .profile fil.

[ -f ~/.git-bash-completion.sh ] && . ~/.git-bash-completion.sh
$ source .profile

Så virker “code completion” til Git. Det virker også på Mac.

Sqlite3 Databasen

Databasen SQLite er et software bibliotek, der implementer en serverless, nul-konfiguration, transaktions SQL database. SQLite er den mest udbredte SQL database i verden. Jeg vælger denne fordi den er god og rækker nemt til eksperimenterne softwareudvikling. Måske skulle jeg også sige at hele den hype omkring databaser er mig fuldstændigt ligegyldig. Jeg operere med objekter og er ligeglad om man vil mappe til redaktionelle modeller eller grafer.

Mandriva er lige på dette område lidt mærkelige. Man kan ikke “urpmi sqlite3” som under andre distributioner.

$ sudo urpmi ruby-sqlite3
$ sudo urpmi libsqlite3-devel
$ sudo urpmi sqlite3-tools
$ sqlite3

Det er vigtigt at installer SQLite databasen og ruby-sqlite3 broen før Rails og Gems ellers får man en fejl med “Failed to build gem native extension”

RubyGems and Rails

Hvis man vil lave en webfrontend er rails sagen. Rails får og gamle Java teknonørder til at se håbløst gammeldags ud. Ruby sproget nedeunder er vidunderligt og supersmidigt mens man kun skriver 10 gange mindre antal kodelinjer set i forhold til fx Java.

Mange af modstanderne siger at Java fx er langt overlegen når det gælder hastighed men det er mange år siden jeg på en Java installation rent faktisk er hurtig. Det skyldes nu mere de folk som udvikler applikationerne der ødelægger dem med overengineered arkitektur og bloadet tredieparts frameworks og elendige sprogkonstruktioner. Java kan være hurtigt men meget få mennesker ved noget om virkeligt krævende high performent applikationer.

Ruby er programmeringssproget og rubygems er ruby’s pakke manager med hvilken man installer rubyonrails og andre gems.

$ sudo urpmi ruby
$ sudo urpmi ruby-dev # header soruce files
$ gem install sqlite3-ruby # sqlite ruby bro
$ ruby -v # Ruby 1.8.7
$ sudo urpmi gems # pakke system
$ gem -v # 1.0.1
$ gem update --system # rails requires rubygems >= 1.3.1 
$ gem -v # 1.3.1
$ gem install rails # rails pakken
$ rails -v # 2.2.2
$ gem install mongrel # server

Stuff

I 1997 fik jeg min første rigtige lærestreg. Jeg fyrede en unix command af mens jeg stod i et forkert bibliotek. Siden dengang har jeg gerne haft mindst to diske med alle gamle dokumenter og fotos, konfigurationsfiler og andet. Jeg bruger rsync til at hente og opdatere(pull/push):

 rsync -av external/stuff


By Frank Vilhelmsen - 3 tags: linux rails git - Add comment