Installering af MySQL gem

I forbindelse med mit bachelorprojekt, hvor jeg benytter mig af (http://www.rubyonrails.org/ “Ruby on Rails”), begyndte jeg at få følgende fejl.

DEPRECATION WARNING: You’re using the Ruby-based MySQL library that ships with
Rails. This library will be REMOVED FROM RAILS 2.2. Please switch to the
offical mysql gem: `gem install mysql` See
http://www.rubyonrails.org/deprecation for details. (called from mysql_connection at /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/connection_adapters/mysql_adapter.rb:81)

Så var der jo ikke andet at gøre end at køre den kommendo som beskeden foreslog. Det plejer at være dejligt nemt at installer gems. Men nej.

$ sudo gem install mysql

Gav følgende resultat.

Building native extensions. This could take a while…
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/opt/local/bin/ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lm… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lz… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lsocket… no
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lnsl… no
checking for mysql_query() in -lmysqlclient… no
*** extconf.rb failed ***

Det undrede jeg mig så lidt over, indtil jeg efter at have søgt lidt på [google](http://www.google.com/ “Google”) fandt nogen med samme problemer.
Det skyldes hovedsaglig at min [MySQL](http://www.mysql.com/ “MySQL Query Analyzer – Improving SQL Query Performance”) er installeret lidt specielt. Nemlig i `/opt/local/lib/mysql5/` og alle mysql-relaterede programmer i min $PATH hedder noget med mysql_*5.
Derfor kunne gem-pakken ikke blive installeres automatisk, og man må hjælpe den lidt på vej, med at fortælle hvor `mysql_config` rigtig ligger, hvilket f.eks. kan findes ved at køre følgende i [iTerm](http://iterm.sourceforge.net/ “iTerm”).

$ locate mysql_config
/opt/local/bin/mysql_config5
/opt/local/lib/mysql5/bin/mysql_config
/opt/local/share/man/man1/mysql_config.1.gz

Herefter kan følgende køres.

$ sudo gem install mysql — –with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config
Building native extensions. This could take a while…
Successfully installed mysql-2.7
1 gem installed

Wuhoo, nu kommer der ingen DEPRECATION WARNING mere :)

Firefox og sidst lukkede tabs

Siden jeg opgraderede til Firefox 3.0, har det ikke været muligt for mig at genskabe lukkede tabs.
Normalt kan dette gøres fra History -> Recently Closed Tabs, men denne var altid grå / ikke aktiv ved mig.

Først tænkte jeg at dette måske var en fejl ved opgradering til FF3, men efter en hurtig søgning på google kunne jeg se at dette nok mere skyldes et gammelt plugin.
I følge [denne bug report](https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/129749) skriver [en som kommentar](https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/129749/comments/11) at man skal igennem [about:config](about:config) skal sætte

browser.sessionstore.enabled = true

Efter at have rettet denne værdi og genstartet firefox, virker denne funktion nu igen. Rart!

Git med ekstern arbejdsmappe

Jeg har aldrig helt fået taget mig sammen til at sætte mig ind i [Git](http://git.or.cz/ “Git – Fast Version Control System”), men i forbindelse med mit bachelor projekt, tænkte jeg at nu skulle det være.

Det første jeg ville have, var at få mine git commit direkte ind i det [projektstyring](http://www.redmine.org/) jeg benytter.

## Lokalt opsætning
Først startede jeg mit repository

$ mkdir projekt
$ cd projekt
$ git init

## Ekstern server
Derefter skulle det være muligt at ‘pushe’ ens rettelser ud via ssh.

Derfor gjorde jeg følgende på serveren:

$ mkdir projekt.git
$ cd projekt.git/
$ git –bare init

## Lokalt igen

Derefter kunne jeg gøre følgende

$ git push user@servername.tld:project.git/ master

Herefter kunne jeg definere stien til .git i projekt styringen.
Det kan være en god ide at opsætte SSH-keys før man benytter denne metode. Så man ikke skal indtaste ens password hele tiden, og derudover et alias til dette commit.
Man behøver selvfølgelig ikke at lave den sidste handling hele tiden, men kun når man mener at man vil publicere det sidste man har lavet.

Rotering af logfiler på et andet drev.

Debian er normalt ikke det jeg roder for meget med, men en gang i mellem bliver man nødt til det. Med den lovgivning vi har i dag, skal vi gemme et år tilbage. Det er sådan set nemt nok at sætte op. Først dog lige hvordan det foregår på FreeBSD.

## På FreeBSD

På FreeBSD sætter man f.eks. newsyslog til at rotere maillog med følgende kommando.

/var/log/maillog 640 365 * @T00 JC

Den rotere hermed hver nat og gemmer 365 dage tilbage.
igennem `/etc/crontab` bliver newsyslog så kørt.

0 * * * * root newsyslog

Man kan dog komme ud fra at alle logfilerne ikke kan ligge på samme disk, og man kan derfor tilføje `-a

` til newsyslog, og hermed definere et sted hvor roterede filer skal gemmes.

0 * * * * root newsyslog -a /var/log/archived-logs

## På Debian
På Debian er det lidt anderledes. I hvert fald for nogen af logfilerne. For det første kan det være sat op i `/etc/logrotate` eller i dens egen fil i `/etc/logrotate.d/`. I det setup jeg arbejdede med sidst, var dette dog ikke tilfældet. Her blev filerne styret i syslogd.
Følgende giver alle de filer som syslogd rotere;

# /usr/sbin/syslogd-listfiles
/var/log/mail.warn
/var/log/daemon.log
/var/log/syslog
/var/log/mail.log

Via `/etc/cron.daily/sysklogd` bliver disse filer så fundet frem og med `/usr/bin/savelog` roteret.
De filer jeg arbejder med bliver gemt på følgende måde.

savelog -g adm -m 640 -u root -c 365 $LOG >/dev/null

Hvis man læser manpages til `savelog` så får man at vide at `-r ` kan benyttes, til at gemme de gamle filer på en anden lokation.
Det fremgår dog ikke, at denne `rolldir` er relativ til den roterede fil og det er derfor ikke muligt at angive en absolut sti.
Dette er blevet added som [en bug](http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg376050.html), men den er i hvert fald ikke rettet på vores system.

Nå, men tilbage til selve opgaven. At flytte gamle logfiler over på et andet drev.
Først link til drevet så jeg får en relativ path.

ln -s /log/servernavn/savelog /var/log/archived-logs

Derefter flytte de filer som defineret i `syslogd-listfiles`

mv /var/log/mail.warn.* /var/log/mail.log.* /var/log/daemon.log.*
/var/log/syslog.* /var/log/archived-logs

Til sidst rette, så savelog også gemmer filerne i denne mappe

# emacs /etc/cron.daily/sysklogd
savelog -g adm -m 640 -u root -c 365 -r archived-logs $LOG >/dev/null

Nu skulle nye roterede filer gemmes på det nye drev, og pladsproblemerne er løst.

Så fik jeg min iPhone 3G

Ja, jeg var også blandt de mange som stod i gå torsdag aften for at være en af de første som fik en [iPhone](http://www.apple.com/iphone/ “Apple – iPhone”).
Jeg ankom til køen kl 18:45 og blev nummer 122 i køen, men dette var heldigvis langt nok fremme, til at få lov til at købe den telefon jeg har set meget frem til. En 16GB hvid iPhone.

Nu har jeg leget med den i et par dage og er yderst tilfreds. Mange klager over Telia’s abonnement, men jeg høre ikke til dem. Her hvor jeg har begivet mig rundt, virker deres net fint og telefonen var aktiveret da jeg kom hjem fra køen. Prisen er også til at leve med, nu hvor vi her i Danmark kun kan bindes i 6 måneder.

I dag kiggede jeg lidt på at få iPhone til at godkende ssl certifikater man selv har lavet. Den nemmeste løsning var at sende en mail med certifikatet som en CER til telefonen. Derefter kunne man nemt tilføje certifikatet som et godkendt.

En ting som jeg dog savner ved iPhone er en kopiere/indsæt funktion. Især hvis man får nogle lange koder, som skal indtastes. Her tænker jeg f.eks. på trådløse netværk, hvor man kan komme ud for at skulle indtaste 32 tegn…

Fluid – Sidespecifik webbrowser

Via [ScreenCastsOnline](http://www.screencastsonline.com/ “Mac Tutorials : ScreenCastsOnline”) fandt jeg en [anmeldelse](http://www.screencastsonline.com/index_files/SCO0154-fluid.php “SCO0154 – Fluid – Managing Your WebApps”) af freeware programmet [Fluid](http://fluidapp.com/). Dette program gør det muligt at lave en speciel indstillet webbrowser til de sider du besøger mest. Herved bliver det muligt f.eks. at tabbe sig til en bestemt side via Command + Tab, men også f.eks. smide siden op i menubaren. Den kan også opdatere et Dock ikon med f.eks. antal nye mails på Gmail.

Ved det første, synes jeg ikke at det lød ret interessant, men efter at jeg kiggede videre i [videoen](http://www.screencastsonline.com/index_files/SCO0154-fluid.php “SCO0154 – Fluid – Managing Your WebApps”), kom der nogle meget gode eksempler på hvordan dette kan bruges virkelig smart. Se selv eksempler på [fluidapp.com
](http://fluidapp.com/ “Fluid – Free Site Specific Browser for Mac OS X Leopard”).

Pt. har jeg kun lavet en browser som viser et lille ikon oppe i menu-bjælken med [Todoist](http://todoist.com/ “Simple todo list and task manager: Todoist”). Der findes godt nok også et Widget plugin til sitet, men da widgets ikke undersøtter alt den lækre Web2.0 teknologi som Todoist benytter, er det dejligt med sådan et lille program. Kan forresten bestemt anbefale [Todoist](http://todoist.com/ “Simple todo list and task manager: Todoist”) til at holde styr på ens todoliste. Det er rart at have den online, så man altid kan tilgå den.

Synkronisering med iSync og P990i (næsten)

For nogle måneder siden fandt jeg dette link med [isync plugin til p990i](http://projectdaenney.org/2007/sonyericsson-p990i-isync-plugin-and-leopard). Jeg tilføjede det med det samme til min [todoliste](http://todoist.com/), så jeg kunne se på det engang.
Jeg har skrevet om det før på min blog, men har stadig ikke fået det til at virke, og dette plugin hjalp mig heller ikke videre.

Det eneste jeg kan bekræfte. Hvis man prøver at køre synkronisering med [dette plugin](http://www.sonyericsson.com/cws/support/products/software/p990i/sonyericssonp990iisyncpluginversion10743613?cc=dk&lc=da) fra Sony Ericsson, og man har aktiveret bluetooth i powersave mode, så genstarter telefonen automatisk.

Skriv gerne hvis nogen af jer andre P990i ejere kan få dette til at virke.

At deltage i samfundet

Efter et møde mandag aften fik jeg tankerne lidt igang med hvor og hvor meget man kan arrangere sig i samfundet.
Pt. bestrider jeg følgende poster som der kræver mere eller mindre arbejde.

* Spejderleder i [KFUM Spejderne i Vedbæk](http://www.vedbaekspejderne.dk)
* Kassere i CafÉ 308 på DTU
* Næstformand [MacVærk](http://www.macvaerk.dtu.dk) (Mac brugergruppe på DTU)
* Næstformand i [k-net](http://www.k-net.dk)
* Med i Netgruppen på [Trørødkollegiet](http://www.tkol.dk)

Derudover har jeg mit eget firma, [FairWeb ApS](http://www.fairweb.dk), er igang med at blive [Civilingeniør](http://www.dtu.dk/Uddannelse/Kandidatuddannelser/Telekommunikation.aspx) og selvfølgelig vigtigst en sød kæreste derhjemme.
Jeg vil jeg menem, at jeg er forholdvis godt med til at bedrage med min arbejdskraft på forskellige områder. Desværre slider det bare også på en. Det ville være meget nemmere hvis flere ville være med til at tage et ansvar og hjælpe til. Der er mange andre området hvor jeg også gerne vil deltage, men desværre må jeg nok hellere begynde at sige stop.

Der er helt sikkert mange som deltager i lige så meget som jeg, og sikkert også meget mere end hvad jeg gør. Det er kun godt, et **stort** tak til dem.
Men alle i andre. Se nu at få droppet det [WOW](http://www.worldofwarcraft.com/ “World of Warcraft Community Site”) og andre ligegyldige spil, og kom ud og hjælp til i samfundet. Selvfølgelig skal der også være tid til sjov og leg, men husk på. I har kun dette liv at leve i, så brug tiden fornuftigt. Vi har brug for jer alle sammen.

ZigVersion – Subversion Made Easy

Jeg har igennem en årrække altid brugt [SVN (subversion)](http://subversion.tigris.org/) til versionstyring. Selvom jeg har kigget og prøvet andre systemer som [Darcs](http://darcs.net/ “darcs”), [Git](http://git.or.cz/ “Git – Fast Version Control System”), [CVS](http://www.nongnu.org/cvs/), falder jeg altid tilbage til SVN.
Normalt når jeg laver noget som skal styres via SVN, benytter jeg [TextMate](http://macromates.com/ “TextMate — The Missing Editor for Mac OS X”) som også har indbygget SVN klient.

Selvfølgelig bruger jeg også bare den almindelige CLI version. Det er dog mest ved flytning og indstillinger på filer og mapper.
Nogen gange er det bare rart at have et GUI at klikke rundt i. Her faldt jeg over [ZigVersion](http://zigzig.com/ “ZigZig Software – ZigVersion”).

![Zigversion History](http://lauer.dk/wp-content/zigversion-history.png)

Ved hjælp af dette program, kan jeg hurtigt få et oversigt over et repository, også selvom man ikke har hentet fra det før. Det er praktisk nok, når man skal tjekke projekter ud fra f.eks. [Google Code](http://code.google.com/hosting/ “Google Code Hosting”).

Programmet er gratis, hvis man ikke bruger det kommercielt.

Porticus – GUI til MacPorts

Jeg har været lidt fraværende min blog de sidste 2 månender. Det skyldes både eksamensperioden samt et par projekter jeg har haft gang i.
Så må hellere starte med at ønske folk en forsinket god jul og godt nytår. Så er det vist på plads.

Tilbage til emnet. Egentligt er det bare et lille hint til et rigtigt godt program som jeg støtte ind i idag. Det hedder [Porticus](http://porticus.alittledrop.com/) og er et fint lille program til at holde styr på de programmer man har installeret via [MacPorts](http://macports.org).

![Porticus](http://lauer.dk/wp-content/porticus.jpg)

Det giver nem mulighed til at holde ens pakker opdateret og man kan via det brugervenlige interface nemt se hvilke varianter af programmer som ligger i MacPorts.
Man kan også nemt aktivere og deaktivere forskellige versioner af et program, hvis man har behov for det.
Programmet er selvfølgelig gratis og kan [hentes her](http://porticus.alittledrop.com/).