Vores Meeho!™ Blog giver dig generelle nyheder, tekniske tips, inspiration og mere til i relation til Meeho!™-platformen.

Tilmeld dig gratis nu!

Indlæg i kategorien ‘Teknik’

» Ruby – hvordan man aflæser tegnsættet på en streng

Skrevet af Kasper Tidemann d. 22/3 2010 kl. 23:02

Når du fx uploader en CSV-fil på 2 KB i Ruby on Rails, så løber du ofte ind i problemer når du forsøger at afkode tegnsættet i din Tempfile-datastreng fra params[:min_upload_form][:uploaded_fil] (eller hvad du har kaldt dit inputfelt).

Hvis du vil holde alt til ét tegnsæt, så kan du gøre brug af Iconv.conv(’UTF-8′, <et eller andet tegnsæt> , streng) til at konvertere data fra inputfeltet til UTF-8. Men for at få iconv()-wrapperen til at fungere ordentligt, skal den vide hvad der skal konverteres fra. Så hvordan opnår du den viden?

Prøv at bruge Ruby gem’en rchardet af Jeff Hodges. Her er et eksempel på hvordan den kan bruges:

require ‘rchardet’

[...]

cd = CharDet.detect(params[:min_upload_form][:uploaded_fil])
tegnsaet = cd['encoding']

konverteret_streng = Iconv.conv(’UTF-8′, tegnsaet, params[:min_upload_form][:uploaded_fil])

Ovenstående er ikke skudsikkert, men det er da en start. Hvis du har alternative idéer i den forbindelse, så kommentér meget gerne så vi andre kan blive klogere.

» PostgreSQL – ERROR: cannot drop the currently open database

Skrevet af Kasper Tidemann d. 17/3 2010 kl. 22:38
Du støder måske ind i følgende fejl, når du forsøger at drop’e en database i din PostgreSQL:
ERROR: cannot drop the currently open database
Det skyldes at du forsøger at slette den selvsamme database, som du er forbundet til (eller i MySQL-jargon: databasen, som du USEer, så at sige). Prøv at anvende følgende kommando for at løse problemet:
\connect postgres
Kommandoen forbinder dig med postgres-databasen i PostgreSQL, som ofte kaldes “the maintenance database”. Herfra kan du prøve at anvende din drop-kommando igen, hvilket nu vil fungere som forventet.

Du støder måske ind i følgende fejl, når du forsøger at drop’e en database i din PostgreSQL:

ERROR: cannot drop the currently open database

Det skyldes at du forsøger at slette den selvsamme database, som du er forbundet til (eller i MySQL-jargon: databasen, som du USE’r, så at sige). Prøv at anvende følgende kommando for at løse problemet:

\connect postgres

Kommandoen forbinder dig med postgres-databasen i PostgreSQL, som ofte kaldes the maintenance database. Herfra kan du prøve at anvende din drop-kommando igen, hvilket nu vil fungere som forventet.

» scp – kopiér en fil via SSH fra en server til din computer

Skrevet af Kasper Tidemann d. 17/3 2010 kl. 09:23
Hvis du har SSH-adgang til et UNIX/Linux-baseret system et sted, og har brug for via SSH at kopiere en fil, som ligger på serveren, så kan du bruge scp-kommandoen, som findes i de fleste UNIX/LINUX-baserede systemer, inklusiv Mac OS X.
Lad os sige at du vi kopiere en fil fra serveren til din egen computer, en fil kaldet my_file.txt. I det tilfælde skal du køre følgende kommando i din terminal:
scp your_login@addres.of.remote.server:my_file.txt .
Det får din computer til at forbinde til serveren med dit login, hvorefter my_file.txt kopieres til det bibliotek, du arbejder i (og hvor det samme filnavn anvendes lokalt på din computer, det er derfor, der er et punktum i slutningen af kommandoen).

Hvis du har SSH-adgang til et UNIX/Linux-baseret system et sted, og har brug for via SSH at kopiere en fil, som ligger på serveren, så kan du bruge scp-kommandoen, som findes i de fleste UNIX/LINUX-baserede systemer, inklusiv Mac OS X.

Lad os sige at du vi kopiere en fil fra serveren til din egen computer, en fil kaldet min_fil.txt. I det tilfælde skal du køre følgende kommando i din terminal:

scp dit_login@serverens.adresse:min_fil.txt .

Det får din computer til at forbinde til serveren med dit login, hvorefter min_fil.txt kopieres til det bibliotek, du arbejder i (og hvor det samme filnavn anvendes lokalt på din computer, det er derfor, der er et punktum i slutningen af kommandoen).

» RubyGems: uninitialized constant Gem::GemRunner (NameError)

Skrevet af Kasper Tidemann d. 6/3 2010 kl. 23:13

Efter at have opdateret RubyGems, så får du muligvis følgende fejlbesked:

uninitialized constant Gem::GemRunner (NameError)

Hvis du oplever ovenstående fejl når du forsøger at bruge gem, så skal du først og fremmest finde ud af hvilken gem, du gør brug af. Åbn en terminal og skriv følgende:

which gem

Kommandoen vil fortælle dig hvilken gem du bruger, samt stien til den. Det vil typisk være /usr/bin/gem eller /usr/local/bin/gem.

Derefter skal du åbne selve gem-filen i en teksteditor. Hvis du bruger TextMate til Mac OS X, så kan du gøre det direkte fra din terminal vha. kommandoen mate /usr/bin/gem (husk at du muligvis skal ændre stien, så du peger på den rigtige gem).

Når filen er åbnet, så kan du se linjen require ‘rubygems’. Lige under den linje skal du tilføje linjen require ‘rubygems/gem_runner’, hvorefter du gemmer filen. Forsøg så at bruge gem igen – det skulle meget gerne virke nu. Ændringen, som du skal lave i gem, er vist her:

Her kan du se gem, som er åbnet i TextMate. Det er linje 10, som udgør rettelsen.

Her kan du se gem, som er åbnet i TextMate. Det er linje 10, som udgør rettelsen.