Webb

I den här kategorien presenterar jag webbrelaterade poster. Allt från jQuery och css till html och design.

php strtoupper och svenska bokstäver.

Satt med ett skript som skulle generera bilder från text och behövde då göra om strängen till stora bokstäver.

Lätt som en plätt tänkte jag. skickade in bokstäver i strtoupper.

echo strtoupper("Bostäder");
//Resultatet: BOSTäDER

Som ni ser blev resultatet inte det väntade.

Men lösningen var enkel – byt ut strtoupper till mb_strtoupper

echo mb_strtoupper("Bostäder");
//resultat BOSTÄDER

Edit: Kräver att modulen mbstrings är installerad och aktiverad!


PHP och late static bindings

I PHP 5.3.0 introducerades en fin liten grej som inte fått så jättemycket uppmärksamhet. Late static bindings. 

När du jobbar med klasser för att skapa objekt så får du ofta en situation som ser ut som följande:

<?php
class person{
    static $name = 'Unidentified person';
 
    public static function getName(){
        return self::$name;
    }
 
}
 
class teacher extends person{
    static $name ="Teacher"; 
 
}
 
echo teacher::getName();?>

Vilket kommer att ge

Unidentified person

När man egentligen vill ha variabeln från childklassen och inte parentklassen. Det är här late static bindings kommer in i bilden.

Om man då byter ut raden return self::$name till return static::$name så gör man alltså en late static binding och php förstår att det är variabeln från childklassen du vill returnera och inte den från parentklassen(där funktionen getName ligger). Koden blir alltså så här:

<?php
class person{
    static $name = 'Unidentified person';
 
    public static function getName(){
        return static::$name;
    }
 
}
 
class teacher extends person{
    static $name ="Teacher"; 
 
}
 
echo teacher::getName();?>

Vilket kommer att ge

Teacher

Och helt plötsligt blev även statiska funktioner och variabler så mycket enklare att jobba med genom klasser och arv. Kör hårt!


Owncloud och smidig kod!

I nördkretsar började det idag pratas mycket om owncloud, en sorts molntjänst där du kan lagra data i molnet för att komma åt från vart du än är. Dropbox tänker du, rätt men fel säger jag. För owncloud är något så smart som en dropboxliknande tjänst – fast där du kan sätta upp owncloud på egen server. (Vilket vi gjorde hos daladevelop såklart gjorde för att prova).

Det är ju en ganska färsk programvara och den har några babysjukdomar – men intresset är enormt. Demot som finns på ownclouds hemsida drog under två dygn 250gb data, vilket är schysst för ett open source projekt som precis sett dagens ljus. Prova gärna! Och om du är en daladevelopare så ska du kunna logga in på vårat eget owncloud med dina serverinloggningsuppgifter.

Och appropå det, så fick jag det inte att fungera när jag först provade. Det gick inte. Jag kollade på deras forum och såg att fler haft samma problem och satte mig sen ner för att försöka lösa problemet. Tack vare att projektet är just öppen källkod så kunde jag gå in i koden och se vad som skulle kunna vara fel. Och snabbt förstod jag att det faktiskt var en bugg i koden. Jag skrev ihop en fix och mailade den till författaren av orginalkoden och sa att han gärna fick använda den.

Och det är själva kärnan av open source, att vi tillsammans kan göra programvara bättre genom att tillsammans hitta felen, testa dem och fixa dem.

 


FS-Data känns föråldrat. Ändå.

Under sommaren så har vi som följer människor med viss teknisk bakgrund kunnat följa hur @jonathansulo har ansträngt sig för att @fsdata ska synas mer inom sociala medier med tävlingar och erbjudanden där guld och gröna skogar lovats ut. Jonathan har gjort ett bra jobb, @fsdata är en av de större aktörerna inom sociala medier av de webbhotell som finns i Sverige idag. Bland annat har de i det sista en hederlig ”den som får flest klick på länken” tävling där man kan vinna en dator.  En tävling som lockar ett stort intresse, och flera tusen människor har varit där.

En annan kampanj som de haft över sommaren har varit kampanjkoder, och den som är först att fylla i kampanjkoden på hemsidan vinner ett år av gratis webbhotell. Glad i hågen insåg jag en dag att jag hade stor möjlighet att bli först. Och ja då! Det blev jag! Spännande tänkte jag, alltid roligt att få se vad andra webbhotell använder sig av för paneler, system och liknande. Så jag fyllde i uppgifterna.

Och inget hände. Jag bah Hallllå??? Jag fick ett bekräftelsemail på min ”beställning” och har sedan dess inte hört något mer än ett konto med en obskyr fsdata adress. Det var lite oklart vad man skulle fylla i vid tävlingen så jag råkade välja ett domännamn som var upptaget(vilket inte varnades) och hamnade i mellan systemet på något sätt.  Har mailat fs-data för två dagar sedan och väntar fortfarande på svar för att komma igång med ett domännamn till mitt konto.

Idag kom svaret – i form av en faktura på över 1000kr för ett års webbhotell.

Så med det så säger jag bara – Tack och hej FS-Data, ni imponerade inte på mig i år. Vi kanske ses nästa sommar.

Uppdatering

Efter att ha bloggat om det här fick jag respons direkt från @fsdata, skönt och bra. Min faktura behövdes såklart inte betalas. 10 minuter senare fick jag ett nytt mail från FS-Data. med en ny faktura istället för en kreditering. Heja heja!


Bild: Mugshot från sswc

Mugshot sswc


Packlista #sswc

Imorgon åker jag till #sswc för att i tre dagar diskutera internet, nörda och lära mig massor av nytt av andra intelligenta människor. Det ska bli jättespännande. På internet florerar mängder med packningslistor över saker som man vill ha med sig, och jag har tröttnat på listor över tält, sovsäckar och liggunderlag!

Här är min packlista som jag ser till att packa min dator med innan jag åker:

  • node.js – för serverside javascript
  • jquery – självklart val
  • apache + mysql + php
  • ruby on rails
  • socket.io – för appar som kan prata med node.js
  • senaste wordpress

Och med det i datorn så känner jag mig beredd på det mesta jag kan komma att möta i form av ideer, saker som bara vill hoppa fram och som där och då måste kodas. Spännande värre. Hoppas på mycket kvalitativt nördande.


Nu börjar jag längta efter att få nörda loss ordentligt. Lördag klockan 15 kör vi igång daladevelop igen! Hurra!

 

Daladevelop är ett webbutvecklarkollektiv. Kika in på http://daladevelop.se för mer info!

Läs mer

 

Guide: Ruby on Rails på Ubuntu med Mysql, passenger och vhosts.

Ruby on Rails är ett framework för att utveckla webapplikationer. Det bygger på ruby som är ett objektorienterat högnivårspråk. Det skiljer sig i mångt och mycket från det vanligare språket php. Det som är spännande med just ruby är dels att objektorienteringen är så djupt integrerad som den är, samt att det tillsammans med frameworket Rails blir en fantastisk plattform att utveckla på.

Googla efter guider om hur man kommer igång med Ruby on Rails, den här guiden handlar istället om hur man sätter upp en Ubuntu server för att kunna köra webbapplikationer byggda med just Ruby On Rails.

Jag använde mig av en Ubuntu 10.04 som är en long time support när jag gjorde det här och valde att köra Apache som webbserver då jag har  erfarenhet av den sen förut.

Det första jag behövde göra var att installera paketet build-essential. Det innehåller diverse verktyg för att bygga och kompilera paket från källkod, vilket vi kommer behöva i den här guiden. Vi installerar också programmeringsspråket ruby.

OBS!Den här guiden kräver att du har administratörsrättigheter(sudo) på servern du vill installera det på.

sudo apt-get install ruby-full build-essential

När det är klart så behöver vi installera webbservern apache, och lite paket som hör till den.

sudo apt-get install apache2 apache2-mpm-prefork apache2-prefork-dev

Vi vill också aktivera några moduler som vi vill att apache2 ska använda, och när det är gjort så startar vi om apache.

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart

När det är klart så vill vi installera mongrel. Mongrel är också en webbserver, men i den här setupen så använder vi den tillsammans med proxy_http modulen med apache som en lastbalanserare.

sudo apt-get install mongrel

Sådär. Nu ska vi ta och installera gems till ruby. Gems är vad man kan likna vid plugins eller moduler till språket. Rails är ett gem så för att ha senaste versionen att leka med så installerar vi rubygems.

wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.6.tgz
tar -zxvf rubygems-1.8.6.tgz
cd rubygems-1.8.6/
sudo ruby setup.rb
sudo gem update --system

Så där, nu kan vi använda kommandot gems för att installera de gems vi vill ha. Eftersom vi vill sätta upp rails så är det vad vi nu vill göra.

sudo gem install rails

Eftersom vi också vill att rails ska kunna integrera med en databas, i det här fallet mysql så installerar vi de kopplingar som behövs för det, samt också själva mysql-servern.

sudo apt-get install mysql-server libmysql-ruby libmysqlclient-dev

Vi kommer också att behöva passenger, som även det är ett ruby-gem. Passenger (som även kallas mod_rails ibland) är en modul till apache för att köra ruby web applikationer i apache.
För att kunna installera det måste vi först installera några andra paket.

sudo apt-get install apache2-dev libapr1-dev libaprutil1-dev

Och sen kan vi köra igång med installationen av passenger.
Följ instruktionerna som dyker upp på skärmen.

sudo gem install passenger
 
sudo passenger-install-apache2-module
sudo apt-get install libcurl4-openssl-dev
sudo passenger-install-apache2-module

För att få apache att känna av det här så lägger vi till följande rader i filen /etc/apache2/apache2.conf som du kan öppna med din favoriteditor(vim, nano)

#Rails specific
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.7
   PassengerRuby /usr/bin/ruby1.8

Och när det är gjort så startar vi om apache.

sudo service apache2 restart

Nu är vi egentligen klara att köra. Hur du bygger din webbapplikation är något som den här guiden inte tar upp, men jag bifogar ett exempel på en vhostfil som du kan använda när du sätter upp din applikation.

<VirtualHost *:80>
      ServerName railstest.daladevelop.se
      DocumentRoot /var/www/railsapplication/public$    # <-- be sure to point to 'public'!
      <Directory /var/www/railsapplication/public>
         AllowOverride all              # <-- relax Apache security settings
         Options -MultiViews            # <-- MultiViews must be turned off
      </Directory>
   </VirtualHost>

Om allt gått som det ska så är du nu redo för att sjösätta din första webbapplikation skriven med ruby on rails. Förhoppningsvis så går det som på räls. Pun intended. Lycka till!
Kommentera gärna om det är något som inte fungerar så ändrar jag


Länktips: github.com

Det här är så sjukt häftigt: https://github.com/kanaka/noVNC - En VNC klient skriven i HTML5. Den använder sig av websockets och lite annat smått och gott för att fungera. Helt klart värt att ta en titt på koden!

 

 

 

 

 

 

 


Länktips: techcrunch.com

Det här är riktigt skoj.

Jag skrev ett tidigare inlägg där jag länkade till en post som handlade om hur man fick det nya google-utseendet att ha ett ubuntu-tema. Nu har någon gjort något ännu kaxigare för att understryka likheten mellan Google+ och Facebook. 

 

Känner du igen dig?



Kontakta mig!

Vad roligt att du vill kontakta mig! Jag är jättenyfiken på vad du har att säga mig! Fyll i formuläret nedan så återkommer jag till dig så fort jag bara kan! Varma hälsningar! / Emil