113 dager er 3 måneder og 3 uker

Å jobbe med datoer, det være seg i mattestykker eller programmering, har jeg tidvis funnet vrient. Det er lett å finne ut hvor mange dager det er siden sommerferien var over, eller hvor mange dager det er til jul, men vi mennesker teller ikke tid i ti-tall men i måneder, uker, dager og timer. I denne posten viser jeg hvordan du kan telle ned dagene til jul, på en pen menneskevennlig måte, i PHP.
Koden i denne posten er hentet fra Aidan Lister. Det eneste jeg har gjort er å oversette months til måneder, osv.


 * @version     2.0.0
 * @link        http://aidanlister.com/2004/04/making-time-periods-readable/
 * @param       int     number of seconds elapsed
 * @param       string  which time periods to display
 * @param       bool    whether to show zero time periods
 */
function time_duration($seconds, $use = null, $zeros = false)
{
    // Define time periods
// jeg har skrevet å som å - med riktig bruk av charset er dette muligens unødvendig.
    $periods = array (
        'år'      => 31556926,
        'måneder' => 2629743,
        'uker'          => 604800,
        'dager'         => 86400,
        'timer'         => 3600,
        'minutter'      => 60,
        'sekunder'      => 1
        );
    // Break into periods
    $seconds = (float) $seconds;
    foreach ($periods as $period => $value) {
        if ($use && strpos($use, $period[0]) === false) {
            continue;
        }
        $count = floor($seconds / $value);
        if ($count == 0 && !$zeros) {
            continue;
        }
        $segments[strtolower($period)] = $count;
        $seconds = $seconds % $value;
    }
// Build the string
// dette er endret til å fungere med norske suffix
    foreach ($segments as $key => $value) {
        $segment_name = substr($key, 0, -2);
//        $segment_name = substr($key, 0, -1);
        $segment = $value . ' ' . $segment_name;
        if ($value != 1) {
//            $segment .= 's';
            $segment .= 'er';
        }
        $array[] = $segment;
    }
    $str = implode(', ', $array);
    return $str;
}
?>

Denne funksjonen kan du lime rett inn i php-dokumentet ditt, kanskje helst inn i en klasse av noe slag?

Så når funksjonen kjøres:

Funksjonen tar antall sekunder som parameter, så…
..var det de pokkers sekundene da.

$dag   = 21;     // Dagen vi teller ned til 
$maaned = 12;      // Måned vi teller ned til 
$ar  = 2009;   // Året vi teller ned til 
$tidspunkt  = 23;     // Klokken (hele timer) vi teller ned til 
$sekunder_til_noe_skjer = ((mktime ($tidspunkt,0,0,$maaned,$dag,$ar)-time(void))); // sekunder

Og funksjonen kjøres:


Resultatet er en nedteller som gir et resultat i dette formatet:

3 måneder, 3 uker, 19 timer, 26 minutter, 3 sekunder

Og slikt liker vi.

PS: jeg har også lagt koden på snipplr, og du kan lese Aidans post om koden sin her.

Bilder i wordpresskommentarer.

Si det med bilder!

Jeg har irritert meg over at det ikke funker å legge inne bilder i kommentarene i wordpress. Det er greit at det er «skrudd av» for folk flest av sikkerhets-hensyn, men jeg sjekker alle kommentarene som dukker opp i bloggen, og ser gjerne gjennom koden også. I denne posten viser jeg deg hvordan du kan tillate bilder i kommentarene i en wordpress-blogg.

Praktica

Jeg vil tro at det skal funke å klippe/lime rett fra flickr nå, da både a-taggen og img-taggen er lovlig.

Dette er en av fordelene med fri programvare, wordpress er open source. Fri programvare. Dette betyr at jeg kan selv tilpasse wordpress til mine behov.

Slik tillater du bilde-tagger i wordpress:

Åpne og rediger filen kses.php som vist under. kses.php ligger i /wp-includes/ som du finner i roten.

Rediger inn:

$allowedtags = array(
'a' => array(
'href' => array(),
'title' => array(),
'rel' => array()),
'img' => array(
'src' => array(),
'alt' => array(),
'width' => array(),
'height' => array()),
'abbr' => array('title' => array()),

enklere, putt inn:

'img' => array(
'src' => array(),
'alt' => array(),
'width' => array(),
'height' => array()),

mellom arrayen for ‘a’ og ‘abbr’.

Denne koden fant jeg på forumet til wordpress, og det er skrevet av carthik.

Dette bør du vite:

  • kses.php er en fil som ligger i en del av filsystemet som ikke skånes ved oppdateringer. Det betyr at du lett kan overskrive denne filen når du oppdaterer, uten å være klar over det.
  • Det finnes mer sexy måter å gjøre dette på, f.eks. å skrive en plugin som overstyrer tilatte tagger i denne arrayen fra en fil i /plugins/-mappen. Det er helt klart mye lurere.
  • Dette er «skrudd av» av sikkerhetshensyn, dette bør du kun gjøre om du føler at du har sånn nogen lunde teknisk kontroll, og stålkontroll på innholdet i bloggen din.

Men altså nå kan du kommentere i bilder på stavelin.com!

web-hospitari ved UiB

Overnatte på hospits.uib.no? – Her er det du trenger å vite!

UiB er visstnok i gang med et webhotellprosjekt for deg som trenger mer standard funksjonalitet som blog, wiki osv. Om relativt kort tid vil denne guiden kun være spennende for de sære.

Jeg trengte et webhotell til min masteroppgave, og måtte med det gjennom en prosess for å legges inn på hospits.uib.no. Det er noen enkle skritt som skal til, men de er ikke spesielt godt dokumentert. Dette dokumentet burde være nok til at din innsjekking går raskere enn min.

Hva kan du forvente av hospits.uib.no?

  • Et subdomene under uib.no
  • lagringsplass der html kan leses utenifra
  • php (de hadde også de innstikkene jeg trengte, imagemagic & phpGD)
  • mysql database
  • Lite eller ingen support, dette er nok en sport for de som vil lage sine egne problemer

Andre og mer konkrete løfter om ting du kan forvente, kan du lese om her.

Komme i gang:

  • Søke om å få plass på bs.uib.no (må være student/ansatt/ol med god grunn)
    Du ber også om et domenenavn nå, fint å ha tenkt dette ut først som sist.
  • Logge inn med ssh/sftp
    Du har fått opprettet en mappe som heter mittdomene.uib.no, den finner du under
    /www/sites/mittdomene.uib.no/. Denne mappen ligger et par hakk under din vanlige bruker (min er est040), og så inn i /www/sites/…
    Du logger inn med vanlig brukernavn + passord (samme som når du logger deg på en UiB-maskin), mot serveren hospits.uib.no
    Huske port 22 (ssh/sftp), ikke 21 som er vanlig ftp.
    sFTP er nesten likt som FTP

    Skjermbildet er av Transmit. sFTP er nesten likt som FTP. Husk port 22. Brukernavn og passord er den vanlige kombinasjonen din.

  • Last nå opp filene dine
  • Opprette database

    For å opprette database må en av dere logge på med kommandoline/ssh og kjøre kommandoen /usr/bin/db – denne oppretter en database med samme navn som brukernavnet til den som er logget på og du får sette et selvvalgt passord på denne. Kommandoen kan kjøres senere for å endre passord på databasen. Hver bruker får opprette en database på denne måten. Trengs det flere databaser kan dette opprettes på forespørsel, men da blir det mindre fleksibelt mtp eventuelle passordbytter. Det er ikke smart å ha samme passord på databasen som på resten av systemet.
    (sitat fra min dialog med brukerstøtte)

    Altså: logg på med terminalen, skrive inn /usr/bin/db, og følg instruksjonene. Ta passordproblematikken på alvor.

  • phpMyAdmin finner du på https://hospits.uib.no/phpMyAdmin/,
    jeg måtte gjette dette, du vet det nå. Brukernavn er ditt vanlige, passordet er det du satt på databasen noen skritt tidligere i guiden. (et annet enn ditt vanlige, helst.)

Dette skulle være mer enn nok til å få prosjektet ditt på lufta, men en kravstor fyr som meg forventer også å kunne koble seg til databasen fra en klient, f.eks. shift.

For å få dette til må du:

  1. Lage en ssh-tunell mot hospits.uib.no:
    Skriv inn ssh -L 8888:hospits.uib.no:3306 ditt-vanlige-brukernavn@hospits.uib.no i terminalen. Kvitter med ditt vanlige passord.
  2. Koble til mysql-klienten med følgende info:

    Brukernavn er ditt vanlige, passord det database-passordet, og databasenavnet er automatisk satt da du opprettet den, hvis det er du som opprettet databasen er det ditt brukernavn som er navnet på den.

Og vips kan du redigere databasen via et langt mer sexy GUI an hva phpMyAdmin har.

Lykke til?

Satellite(n) over flickr farmen

For at Satellite skal funke må du oppdatere stiene til flickrs servere. Det holder ikke lenger med static.flickr.com/.

Satellite er fin programvare:)

Satellite lar deg vise dine flickr-bilder på websiden din, langt ut over hva f.eks. flickr badges gjør.

Der skremte jeg nok vekk alle ikke-nerder; men altså:
Før var stiene til flickrs bilder tilgjengelig under static.flickr.com. Nå må vi presisere hvilken farm (antar flickr har vokst seg ganske stor..) filen er parkert i. Ala: farm3.static.flickr.com.

For å rette opp elendigheten for de som bruker Satellite php til å vise flickr bilder på sin hjemmeside, må følgende grep gjøres. Jeg antar dette bare gjelder for 1.0 av Satellite. Aner ikke med 1.5.

Bytt ut alle URLer som inneholder «static.flickr.com/$server/$id…» med noe slikt:

http://farm".$farm.".static.flickr.com/".$server."/".$id."_".$secret."$size.jpg

Det er http://farm».$farm.».static som er viktig. Få inn bokstavene «farm» og id på denne. Til sammen blir det farm1.static… hvor tallet 1 endrer seg.

Så må du sørge for at denne nye variabelen $farm gjør noe:

foreach ($photos as $photo) {
if ($i==$which) {
$id = $photo['id'];
$server = $photo['server'];
$secret = $photo['secret'];
$farm = $photo['farm'];
...

Det er igjen farm som er nytt og viktig: $farm = $photo[‘farm’];.

Ekesempelet her er fra linje 71 i preferences.php. For hver URL du bytta ut og fikk med farm».$farm.».static.flickr.com, må du gjørre dette. Altså lage variabelen $farm og hente ut verdiene med denne i $noe[‘farm’]:

I alt en enkel sak om ikke bør by på for mange utfordringer. For enkelhetsskyld legger jeg ved en tekstfil min min preferences.php.

Satellite funker igjen på stavelin.com/photo

Satellite funker igjen på stavelin.com/photo.

Resultatet ser helt likt ut som før: stavelin.com/photo.

Hvordan du kan få Satellite til å leke pent med flickr har jeg skrevet om før, under WordPress møter flickr.