Category Archives: It

Installering af MySQL gem

I forbindelse med mit bachelorprojekt, hvor jeg benytter mig af 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 fandt nogen med samme problemer. Det skyldes hovedsaglig at min MySQL 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.

$ 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 :)

Git med ekstern arbejdsmappe

Jeg har aldrig helt fået taget mig sammen til at sætte mig ind i Git, 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 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 <dir> 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 <rolldir> 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, 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.

Fluid – Sidespecifik webbrowser

Via ScreenCastsOnline fandt jeg en anmeldelse af freeware programmet Fluid. 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, kom der nogle meget gode eksempler på hvordan dette kan bruges virkelig smart. Se selv eksempler på fluidapp.com .

Pt. har jeg kun lavet en browser som viser et lille ikon oppe i menu-bjælken med 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 til at holde styr på ens todoliste. Det er rart at have den online, så man altid kan tilgå den.

ZigVersion – Subversion Made Easy

Jeg har igennem en årrække altid brugt SVN (subversion) til versionstyring. Selvom jeg har kigget og prøvet andre systemer som Darcs, Git, CVS, falder jeg altid tilbage til SVN. Normalt når jeg laver noget som skal styres via SVN, benytter jeg TextMate 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.

Zigversion History

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.

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 og er et fint lille program til at holde styr på de programmer man har installeret via MacPorts.

Porticus

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.

SQL i TextMate

Igen kommer min ynglingseditor, TextMate mig til undsætning, når man lige mangler et smart program. I forbindelse med et kursus på DTU, skal vi lave nogle udtræk fra en mysql database. Her begyndte jeg først at skrive dem direkte i MySQL konsol, men det bliver man ret hurtigt træt af når de udtryk man skal lave fylder et par linjer. Derfor undersøgte jeg lige om TextMate nu kunne noget smart, og heldigvis findes der en SQL-bundle som standard.

Sqlbundle

Vælg først perferences, og sæt op forbindelse. Jeg har ændret lidt i min bundle, så jeg kan eksekvere sql-kommendoen ved CMD + R.

sqlbundle_perferences

Her lige et screenshot når man udfører kommandoer. Man får nemlig en hel SQL browser med.

Sqlbundle Browser

Btw, altid rart med Cmd + Shift + 4 når man skal tage hurtige screenshots. Og hvis man trykker på space, kan man hurtigt snappe et vindue. Jeg er simpelthen vil med MacOS X.

Problemer med Latex (tetex) på en opgraderet Leopard

Jeg købte med det samme Leopard kunne bestilles, en familielicens til alle mine macs. Min MacBookPro lavede jeg en ren installation, hvor jeg på min iMac lavede en opgradering, da systemet på den ikke er mere end et par måneder gammel. Da jeg så ville installere tetex igennem MacPorts, fik jeg en mærkelig fejl, som jeg ikke fik da jeg installerede det på min MacBookPro som også kørte Leopard.

i686-apple-darwin9-gcc-4.0.1: 1/lib: No such file or directory
make[2]: *** [xdvi-xaw.bin] Error 1
make[1]: *** [all] Error 1
make: *** [all] Error 1

Efter at have søgt lidt på google, fandt jeg hurtigt svaret. Så efter at have hørt følgende, havde jeg et fuldt virkende Latex installation med bland andet pdflatex. Lækkert.

sudo port install openmotif
sudo port clean tetex
sudo port install tetex

Update Jeg glemte helt at fortælle om den lille guide jeg fulgte for at få latex til at spille sammen med Textmate også. Læs omkring den her

Netbeans 6.0 Beta til Ruby on Rails

Lidt tilfældigt kom jeg til at læse denne artikel, hvor en mac-bruger fortæller om den nye Netbeans 6.0 IDE, som nu er kommet i beta. Mange RubyOnRails udviklere bruger i dag Macintosh og texteditoren Textmate, som jeg før har skrevet om. Textmate er dog bare en god texteditor og ikke et IDE som nogen savner lidt. Hvis man koder RubyOnRails og gerne vil prøve et andet værktøj, er det bestemt værd lige at tage et kig på artiklen, og evt lige prøve Netbeans 6.0 Beta 1.

Google produkter

I søndags kom jeg hjem fra en dejlig ferie i Alanya, Tyrkiet. 14 dage med omkring 40 grader, solskin og dejligt varmt havvand. Er i hvert fald ikke misunderlig på det vejr som har været herhjemme i Danmark. Jeg havde selvfølgelig ikke min bærbar med på ferie, men kun min telefon, som dog også var fint nok til de mange steder hvor der er fri Wifi. Jeg måtte derfor undvære min bærbar lidt, og låne min svigermors computer. Her fik jeg øjnene op for mange af produkter google faktisk yder. De fleste kendte jeg godt, men har aldrig fået mig taget sammen til at bruge dem.

Den første jeg faldt for var iGoogle, som giver mulighed for at sætte ens egen startside op. Her kan du tilføje nyheder, spil, vejret, tv-oversigt, m.fl., og selvfølgelig også mange af googles andre produkter i miniature. Den næste jeg faldt over, var Google Reader, som er en RRS-reader. Det smarte ved den, er at man altid læse ens blogs mv, imens man er på farten via en offline funktion. En ting som jeg har manglet ved Vienna som jeg brugte før, var at man kunne holde en liste opdateret online, så man også kunne læse ens rss-feeds når man ikke var ved ens egen computer. Denne funktion har Google Reader selvfølgelig, da det hele ligger online.

Derudover bruger jeg Kalenderen, Kode søgning, Notesblok, Docs & Spreadsheets.

Hvor er det bare rart at føle sig hjemme, selvom man sidder ved en anden computer.