Kebmans blogg

Hvordan få farger på terminalen i OS X Mavericks

Posted in Data, Programmering, Programvare by kebman on 25/09/2015

Om du bruker terminalen en del på Mac, har du kanskje tenkt at den ser noe kjedelig ut. Her er en kort leksjon i hvordan gi den litt penere og mer intuitive farger.

Sjekk ut Solarized: Precision colors for machines and people på GitHub.

Merk: Det står en del om SIMBL på nettisden, men det trenger du ikke! Det er kun for eldre systemer slik som Snow Leopard.

Last ned pakken som ZIP (Download ZIP på høyre side). Pakk ut ZIP-filen, og sjekk ut mappeinnholdet. Let til du funner noen filer som har fil-etternavn .terminal. Dobbeltklikk på en terminal-fil for å teste, og nyt åsynet av en solarisert terminalen.

I terminalen, under Innstillinger > Avansert det kan være lurt å sette terminaltypen til å være Ansi, siden det er den profilen paletten er optimalisert for, men xterm-256color kan også fungere.

Dette vil gjøre terminalen din mørkeblå med grå tekst. Ganske kjedelig, men fortvil ikke! Du er bare halvveis. For å virkelig gjøre susen, trenger du litt sammenheng.

Gå inn terminalen og skriv:

nano ~/.bash_profile

Deretter skriver (kopierer) du inn disse linjene:

export CLICOLOR=1
export LSCOLORS=gxfxbEaEBxxEhEhBaDaCaD

Trykk så ctrl+x og deretter y for å lagre før du avslutter. For å laste den nye paletten, skriver dette i terminalen:

. ~/.bash_profile

Prøv deretter ut noen terminalkommandoer, slik som for eksempel ls.

export CLICOLOR=1 aktiverer farger i terminalen, og export LSCOLORS ser etter spesifikke kodesnutter i ls-programmet som den kan fargelegge. For mer informasjon om dette, les denne artikkelen: ls, colors, and Terminal.app .

PHP kobler ikke til MySQL via localhost

Posted in Internett, Programmering, Scripting, Teknologi, Webdesign by kebman on 24/02/2012

Fikk plutselig feil da jeg prøvde å koble til MySQL-databasen via PHP i dag. Vips så ble det en aldri så liten detektivhistorie.

Koden jeg bruker for å koble til MySQL med PHP er veldig enkel, godt testet, og har fungert mange ganger før. Ikke det mest avanserte og ikke objektorientert, men den egner seg godt for testing. Her er den:

$host = 'localhost';
$user = 'root';
$pass = 'password';
$link = mysql_connect($host, $user, $pass);
if (!$link) {
   die('MySQL error '. mysql_errno() . ': ' . mysql_error());
}

Kort forklart, hvis $link klarer å koble opp til databasen går alt som det skal, mens om variablen inneholder feil, blir koblingen brutt og det blir istedenfor sendt tilbake noen feilmeldinger. Og her er den jeg fikk:

MySQL error 2002: No such file or directory

Så jeg prøvde å bytte ute passord, bruker, og byttet fra localhost og til 127.0.0.1, og heureka! Da funket det. Men likevel var jeg jo like langt i forhold til localhost. Jeg blunket litt med de våte øynene mine, og et slags mørke la seg over hjernen min. Feilmeldingen sa meg ikke en dritt, og jeg skjønte ikke hvorfor det bare funket med den lokale IP-adressen. Her var det bare å sette i gang og google.

En av tingene jeg testet var om MySQL i det hele tatt reagerte, men det visste jeg jo at den gjorde, fordi jeg kunne koble til via terminalen og via Sequel Pro. Likevel prøvde jeg å pinge den over telnet i terminale, slik:

telnet localhost 3306

Her tittet MySQL frem og sa hei som normalt, så dette var i orden, og fortsatt var jeg like lite klok.

Heldigvis kom jeg ganske snart over denne fine siden: C.5.2.2. Can’t connect to [local] MySQL server

Der sto det utrolig mye unødvendig og irrelevant, men jeg bet meg i alle fall merke i de tingene som faktisk stemte – blant annet en serie tester man kan gjøre i terminalen, disse her:

  1. mysqladmin version
  2. mysqladmin variables
  3. mysqladmin -h `hostname` version variables
  4. mysqladmin -h `hostname` --port=3306 version
  5. mysqladmin -h host_ip version
  6. mysqladmin --protocol=SOCKET --socket=/tmp/mysql.sock version

Da jeg kom til nummer tre på listen, skjønte jeg at noe var galt. Det gikk helt fint om jeg byttet ut `hostname` med localhost, men da jeg brukte den riktige koden, `hostname`, fikk jeg en feilmelding:

mysqladmin: connect to server at 'kebman.local' failed
error: 'Host '10.0.0.7' is not allowed to connect to this MySQL server'

Dette skjønte jeg ikke noe særlig mer utav heller, men det ante meg at det kunne være at en eller annen trodde at kebman.local var localhost, men det er jo slett ikke tilfelle. Dessuten er jo ikke 10.0.0.7 adressen til localhost heller (127.0.0.1 er adressen til localhost).

Lenger nede i dokumentet sto det noe om å finne navnet på socket-filen som brukes for å koble via localhost:

netstat -ln | grep mysql

Svaret jeg fikk, var dette:

/tmp/mysql.sock

«Hm», tenkte jeg nå. «Kan dette ha noe med denne kebman.local-greia å gjøre, tro? Feilen må jo ligge i php.ini et sted (filen man bruker til å konfigrere PHP med), men hvor?» Hadde også lest noe om det på erværdige stackoverflow.com. Jeg søkte igjennom alt som hadde med MySQL i php.ini, og endelig fant jeg det. I php.ini var det en annen adresse til mysql.sock. Jeg endret det til adressen jeg fikk opp med netstat-koden, og voila, endelig funket det å koble til MySQL via localhost med PHP igjen.

For å redigere php.ini på Mac må du først ha rot-passordet til maskinen din. Deretter er det letteste å bruke TextWrangler (gratis) til å åpne opp /etc/php.ini for redigering. Du kan også åpne filen med pico eller et annet UNIX-program for tekstredigering gjennom sudo-kommandoen (sudo gir ordre som rot-bruker).