PHP kobler ikke til MySQL via localhost
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:
mysqladmin versionmysqladmin variablesmysqladmin -h `hostname` version variablesmysqladmin -h `hostname` --port=3306 versionmysqladmin -h host_ip versionmysqladmin --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).
De viktigste verktøyene i Photoshop, Illustrator og InDesign
Penneverktøyet (Pen Tool) og «den hvite pekeren» (Direct Selection Tool) er to av de viktigste verktøyene i Adobe Creative Suite. Disse fungerer nesten likt i både Illustrator, Photoshop og InDesign. Her er en liten guide til hvordan du bruker dem.
Pen Tool
Penneverktøyet.
Denne oppretter vektor-noder som igjen danner vektor-baner (paths). Det er disse banene som etter hvert blir til tegninger i Illustrator, men den kan også brukes i både Photoshop og Indesign, f.eks til å lage masker for å avsløre ting som er under det øverste billedlaget.
En slik bane er ikke en tegning i seg selv, men bare en slags guide som du kan legge forskjellige egenskaper og effekter til. For å få en tegning ut av banen, må du legge til egenskaper slik som strektykkelse og fyllfarge.
Hurtigtast: P
Gi ett museklikk for å sette en node (et punkt eller et håndtak). Flere noder sammen danner en «path» eller en bane (sti/vei).
Etter at du har tegnet opp en bane, kan du holde nede Alt-knappen og redigere en node slik at banene rundt får buer eller kurver. Dette kalles å lage Bezier-kurver.
Direct Selection Tool
Også kalt «Den hvite pekeren»
Med denne kan du flytte en node, eller deler av en banen om du velger den med musen.
Hurtigtast: A
NB! Om du får sort peker når du trykker A, så trykk Shift+A en gang, og du bytter til den hvite. Den sorte brukes til å velge hele bane-objekter.
Flytting og forstørrelse
Om du jobber veldig «nært» og har zoomet mye inn, er det enkelt å flytte på arket ved å trykke på Mellomrom (Space eller «den lange») og så trykke og dra litt i bildet med musen. Da får du opp håndteringsverktøyet (Hand Tool) uten å måtte gå i verktøykassen.
Trykker du Mellomrom+Cmd får du forstørrelsesglass for å zoome inn. Alt+Cmd+Mellomrom for å zoome ut. Du kan også merke et område du har lyst å zoome direkte inn på, ved å trykke, dra og slippe, istedenfor å trykke en og en gang på musen for å oppnå det samme.
Hurtigtaster til verktøylinjen
Generelt er det lurt å lære seg hurtigtastene, i alle fall til de verktøyene du bruker mest. Heldigvis er det veldig enkelt å finne ut av det. Om du vil vite hvilken hurtigtast et verktøy har, er det bare å la pekeren flyte over verktøyet. Etter en stund kommer det en lapp opp med navnet på verktøyet og hurtigtasten i parentes.
Visse verktøy på verktøylinjen har flere verktøy i ett. Dette er markert med en liten trekant nede i høyre hjørne på verktøyikonet. Klikk og hold en stund, så får du en listen med de ekstra verktøyene. Du kan også skifte hurtig mellom «underverktøy» ved å holde Shift nede når du prøver en hurtigtast.
Arbeidsprosess
Alt etter hvilket program du bruker, er det litt forskjellige arbeidsprosesser forbundet med hvert program. I Photoshop og InDesign brukes vektorbaner stort sett til å lage forskjellige typer masker og baner for eksport til andre programmer, mens i Illustrator brukes banene til å lage vektortegninger.
Den vanligste arbeidsprosessen i Illustrator består av å lage en skisse på papir først som man scanner inn. Så legger man det inn i et eget lag (Layer) som man låser, gjerne etter at man har skjerpet bildet litt i Photoshop først. Deretter jobber man med å føre inn skissen i lagene over med penneverktøyet og den hvite pekeren.
For å legge inn en skisse, pass på at du har høy nok oppløsningen på scannet. 300 ppi er bra. Jobb gjerne med skarphet og kontrast i Photoshop før du eksporterer et ferdig bilde du kan jobbe videre med i Illustrator.
Sett skissen inn det nederste laget i Illustrator ved å gå inn i toppmenyen og velge File > Place… Så finner du bildet på harddisken og legger til. Deretter går du inn i lag-fanen (Layer tab) og låser laget, slik at du ikke med uhell flytter på tegningen mens du lager vektorbaner i lagene over. Vanligvis er denne fanen nederst til høyre, dog dette kommer litt an på hvilken Work Space du har valgt. Om du ikke finner fanen, gå til toppmenyen og velg Window > Layers eller trykk F7.
Når man fører inn skisser og lager figurer, bytter man ofte mellom P og A. Man lager en node (P). Så flytter man litt på den for å justere (A). Så legger man kanskje til kurver på banen (Alt+P). Derfor er det greit å lære seg hurtigtastene for disse to. Disse egner seg også godt til bruk med mus eller styreflate, mens selve tegneverktøyene i programmene blir mye enklere å bruke om du bruker et skikkelig tegnebrett.
NB! Denne guiden er hovedsaklig for Mac-brukere, men vanligvis brukes Cmd på Mac akkurat som Ctrl på PC.
CSS syntaks
Et lite oppslag på hvordan CSS skal skrives.
Overordnet syntaks
Engelsk: selectors {declarations}
Norsk: velgere {deklarasjoner}
CSS består av velgere og deklarasjoner. Velgeren består av de HTML-elementene man ønsker å velge. Deklarasjonene består av de designforandringene man ønsker å gjøre på valgte element, avgrenset av krøllparenteser.
HTML-elementer man kan velge er alle taggene, samt visse attributter og pseudoklasser.
Underordnede HTML-elementer arver design laget for overordnede HTML-elementer, så gjør du tekstfargen til body rød, vil også tekstfargen til p og h1 bli rød.
Generell syntaks
Engelsk: selector {property: value;}
Norsk: velger {egenskap: verdi;}
Som du kan se består hver deklarasjon av en egenskap og en påfølgende verdi. Hver deklarasjon skal avsluttes med semikolon.
Det finnes mange egenskaper du kan forandre design til. Farge (color) er bare én av dem. Sjekk ut W3Schools for mer om det.
Eksempel
h1, h2 {color: red; font-family: verdana, sans-serif;}
Her er elementene h1 og h2 valgt. Deretter er egenskapene «farge» (color) og «font familie» valgt og gitt en nye verdier. Som du ser kan man velge flere HTML-elementer, og velge flere egenskaper man gir nye designverdier.
Krøllparentes
På Mac trykker du shift+alt+( for å få krøllparentesen {. På PC trykker du AltGr+(.
NB! CSS skrives på American English, og derfor brukes f.eks egenskapen color (am. eng.) og ikke colour (brit. eng.).
Gåseøyne på nett
Det er en del ting som skiller norsk typografi fra andre lands typografi, og spesielt engelsk og amerikansk typografi. Kanskje den viktigste tingen her er vår bruk av gåseøyne fremfor hermetegn. Likevel bruker folk flest hermetegn, men det er faktisk feil.
Grunnen til at hermetegnet (“”) kom i bruk, har nok med import av en og annen skrivemaskin å gjøre, og sist men ikke minst ignorant kulturimperialisme fra Microsoft. Skriveprogrammet deres, Word, skriver nemlig hermetegn som standard istedenfor gåseøyne («»).
Så, hvordan fikser vi dette på nett?
Det finnes faktisk et eget HTML-element for setningssitater, det såkalt Q-elementet, men bruker du det uten CSS-design, vil du fortsatt få amerikanske hermetegn som standard.
Sånn funker det i HTML: Q-melk er bedre enn Tine melk.
Og slik blir resultatet, uten CSS-design: Q-melk er bedre enn Tine melk.
Du må kalle opp Q-elementet i CSS og bruke noen smarte pseudoklasser for at det skal bli korrekt, slik:
q:before {content: "«";}
q:after {content: "»";}
Så blir det endelig seende slik ut i nettleseren: «Q-melk er bedre enn Tine melk.»
Problemet er bare at dette ikke fungerer i eldre versjoner av Microsoft Explorer (MSIE eller bare IE), noe vi Mac-brukere selvfølgelig driter i. Heldigvis gjelder dette bare versjoner frem til IE7, og disse versjonene brukes bare av noen veldig få nå for tiden. Anyway, skulle du være spesielt interessert, så sjekk disse mulige løsningene:
Er du bare interessert i å få gåseøyne kjapt på Mac-en din, trykk shift+alt+V eller B.
Ting jeg hater med Adobe Flash CS4
Adobe Flash CS4: Det er et animasjonsprogram, ikke sant? Hvorfor er det så uintuitivt og vanskelig å bruke, da? Greit, det er mest for webdesign, og det er lett å skripte, men her er noen ting jeg virkelig ikke liker.
Det er ikke et særlig smart program. Om jeg vil bruke ting som tween, for eksempel, så må jeg konvertere nesten alle tegninger om til symboler. Det meste unntatt tekst, av en eller annen grunn. Det er i tillegg random, noe som også er kjipt. Hvorfor kan ikke programmet bare gjøre dette automatisk når du ønsker å lage en tween, for eksempel?
Skal du lage en objekt-tween, derimot, er det viktig at man ikke lager et symbol. Dette er veldig uintuitivt, og dermed skaper det stort sett bare frustrasjon hos meg, spesielt når jeg må bruke tid på å lære dette – noe jeg kunne unngått om programmet var bare bittelitt smart.
Så er det dette med tweening keyframes, da… Har du satt en motion tween keyframe, da er den hugget i stein. Vil jeg forandre posisjonen på en slik keyframe i tidslinjen, må jeg som regel bare slette den og begynne helt fra nytt.

Hvordan flytter man en slik keyframe, egentlig?
Dette er fryktelig frustrerende, og nesten unikt for Flash CS4. I stort sett alle andre animasjonsprogram kan man flytte på keyframes som man ønsker, til og med innen Adobes egen serie av programmer hvor dette er relevant kan man det, som i Premiere og After Effects. Så, hvorfor må det være så vanskelig i Flash? Greit, kanskje det går an allikevel, men jeg har uansett ikke funnet ut hvordan enda, ny som jeg er, og dermed er det fortsatt alt for uintuitivt til at jeg synes det er bra. Hvorfor i helvete kan ikke bare Adobe holde seg til ett paradigme når det kommer til bruk av lag, keyframes og tidslinjer i alle programmene?
Nei Adobe, dette er frustrerende. Skjerpings!
skriv en kommentar