Installera pear och php-unit på windows 7 i easyphp

by dubbe on 3/11/2011

Börja med att installera easyPHP (det kan du hitta på http://www.easyphp.org/.)
Verifiera att det fungerar.

Jag har windows på Engelska så alla svenska översättningar är egentligen bara gissningar ifall det inte riktigt stämmer

Installera pear
Ladda ner: http://pear.php.net/go-pear.phar
Placera filen i php-mappen i easy-php. (C:\Program Files (x86)\EasyPHP-5.3.8.1\php)
Öppna CMD som administratör (högerklicka och välj ”kör som administratör”).
Gå till php-mappen. (C:\Program Files (x86)\EasyPHP-5.3.8.1\php)
php go-pear.phar

För säkerhets skull kan vi kolla så att pear är uppgraderat:
pear upgrade pear

Sen är det dags att lägga till kanaler som vi kommer behöva för att installera php-unit
pear channel-discover components.ez.no
pear channel-discover pear.phpunit.de
pear channel-discover pear.symfony-project.com

Installera php-unit
Installera php-unit med kommandot:
pear install --alldeps phpunit/PHPUnit

Ändra i phpunit-filen som ligger i php-katalogen (det är en php-fil utan extension).
Lägg till: set_include_path('C:\Program Files (x86)\EasyPHP-5.3.8.1\php\pear');
I mitt fall la jag till en else så hela filen blev typ:

Lägg till path till php-mappen i easyphp i Window 7’s path.
Öppna starmenyn.
Högerklicka på ”Min dator”, välj ”Egenskaper”.
Välj ”Avancerade system-inställningar”.
Klicka på ”Miljövariablar”.
Leta reda på Path och välj edit.
Lägg till sökvägen till php-mappen efter ett ”;”.
I mitt fall: (;C:\Program Files (x86)\EasyPHP-5.3.8.1\php)
Spara och starta om command-prompten.

Sådär! Då borde allt vara klart!

No Comments

Vecka 17

by dubbe on 3/05/2011

Det har tuffat på under veckan, jag har inte gjort några stordåd alls, men det har hela tiden gått framåt (nästan).

Implementationsmässigt var tanken att satsa lite på presentation, en widget samt att visa event och kunna boka biljett.
Att skapa en widget trodde jag skulle vara knepigare, men jag fick den rätt snabbt att fungera och göra som jag ville. Att visa eventet innebär dock att jag var tvungen att tänka till lite extra. Jag var tvungen att skriva en template, men som jag sa i förra inlägget vill jag hålla mig borta från att styla mitt plugin så mycket som möjligt. Slutresultatet blev att jag skapar en template i mitt plugin som jag länkar in, den templaten ska jag skriva så nära som möjligt original-temat men försöka testa om tid finns ifall den går att få så generell som möjligt. Vidare skriver jag in en liten check som kollar om det finns en template-fil med samma namn i det valda temat. I det fallet skall tema-filen väljas i första hand. Då känns det som om jag lämnar utseendet så långt borta från pluginet som möjligt.

Sen sprang jag in i lite problem. Jag listar de olika datumena som eventet går, men hur ska jag skapa och länka till en signup-sida? Jag hade flera olika mer eller mindre fantasifulla förslag… En popup i javascript, en sida som ligger på api-servern eller på skapa en ny sida i pluginet på något sätt. Det optimala vore att kunna skapa en ny sida (en popup är inte heller dumt, men inget jag vill tvinga in någon i…) Efter lite konsultation i wordpress irc-kanal fick jag den information jag behöver för att kunna skapa en sida och använda den.

Jag får skapa en ny sid-typ (valde att kalla för devent) och sedan kan jag använda wp_insert_post för att skapa sidan. Efter det får jag ta och skriva en ny template med formuläret på något sätt inbakat. Möjligt att jag försöker skriva ut själva formuläret med hjälp av short-codes så det blir lättare att stila för andra. Men det blir en lite senare fråga.

Den här veckan kom jag upp i 22 timmar och är nu uppe i sammanlagt 97 timmar.

1 Comment

Vecka 16

by dubbe on 29/04/2011

Det har varit en konstig vecka, som avslutades med en stor fet påskhelg.
Det stora problemet var kanske inte påsken i sig utan att min familj kom hit ifrån östersund och stannade i några dagar. Det gjorde att jag inte riktigt fick allting klart som jag hade tänkt.

Men vad blev klart? Nja, sett såhär i perspektiv… Inte så mycket. Det finns en SQL-struktur på api-servern som inte hjälper mig alls just nu. Men den behövdes för databas-labben, så den fick så lov att dyka upp. Jag skrev en himla massa javascript för att hantera att lägga till flera händelser för ett event, det fungerar sådär. Jag har också skrivit php-kod för att spara information för eventet i en egen tabell i wordpress databas. Men det blev inte klart, nu på måndag ska jag skriva testfall och sedan ska jag testa allting jag skrivit och se vart det är jag måste lägga in krutet.

Vad ska jag göra nu då? Jag ska se till så att jag kan presentera informationen jag lägger in på något sätt, vilket innebär att jag måste börja pilla med presentation. Jag hade hoppats undvika det in i det längsta eftersom jag inte vill att pluginet ska vara beroende av utseende, utan helt enkelt anpassa sig efter det tema som finns. Men nu börjar jag tro att det inte blir riktigt så lätt. Jag måste nog skriva en template fil för att hantera visningen av event. Det kommer ta sin lilla tid.

Samtidigt håller jag på att kika på hur jag ska kunna begränsa projektet. Det känns inte som om jag kommer hinna klart allting som jag vill, därför tror jag att jag ska satsa på att få just wordpress-pluginet till att fungera riktigt bra. Skippar själva kontakten med mitt framtida api. Men ser däremot till så att det går att betala en biljett som man köper. Skulle det visa sig gå väldigt smidigt går jag självfallet vidare, men det är nog bättre att göra en mindre bit riktigt bra (och då inte bara kod-mässigt utan dokumentations-mässigt också) än att ha en massa halvfärdiga saker som fungerar sådär.

No Comments

Vecka 15

by dubbe on 19/04/2011

Timmar: 18,5
Ackumulerade timmar: 55,5

Det har varit en vecka där allting liksom bara tuffat på. Jag har inte alls gjort någon typ av storverk, men det har hänt saker med programmeringen, mestadels bakom kulisserna.

Jag började veckan med att i stort sett skriva om all kod jag tidigare skrivit för att anpassa den för unit-testning av vissa funktioner och klasser. Det fungerade bra efter till tankeverksamhet och nu kan jag med lätthet fylla på med mer unit-testning så snart jag har nånting att testa. Jag lägger till lite fält och sånt, så frågan är lite hur jag ska skriva unit-tests till det…

Förutom det har några timmar gått till att normalisera databas och att börja bygga upp klientsidans databas. Där är inte det svåra att bygga upp själva strukturen utan hur jag ska göra så lite åverkan som möjligt på wordpress befintliga struktur. Jag tror att jag bara behöver en ny tabell (för att spara occurances) i dagsläget, så det är den jag skapat. Ja, jag har skrivit en funktion som skapar tabellen (om den inte finns) när man aktiverar mitt plugin. Det svåra här var att få till relationen mellan post_id’t och postens id. Det slutade med att jag fick formatera om den befintliga tabellen till InnoDB för att få stöd till främmande nycklar. Men när väl det var gjort var det inga stora problem.

Jag har också lagt till extrafält för plats och pris, till pris har jag lagt till en taxonomy. Förutom det har jag skrivit javascript som kan ta bort och lägga till fält för återupprepning, men som också flyttar ner till plats till varje händelse ifall att man vill turnera med eventet.

Den här veckan då? Jag räknar med att få lite minder gjort eftersom det blir en jäkla påsk helt plötsligt. Påsken i sig är väl inget hinder men min familj kommer ner från Östersund för att spendera tid med mig. Så då får jag skjuta lite på studierna.

Men vad är det jag ska få gjort? Jag ska slutföra admin-delen så att jag kan spara fälten jag har skapat också. Tabeller och allting jag behöver är på plats så det ska inte vara några problem. Jag ska börja kolla på hur man skriver en widget så att jag kan presentera eventen jag har skapat på sidan också. Förutom det ska jag skapa den fysiska modellen av databasen på min server, vilket innebär att jag först måste installera apache och mysql på servern. Puh, det blir nog några timmar i alla fall :) Får jag lite tid över ska jag kika på platser på admin-sidan. Jag måste kunna skapa separata platser som jag sedan kopplar till eventet. Det blir nog som en custom page-type.

No Comments

Vecka 14

by dubbe on 12/04/2011

Det har varit en ganska dålig vecka för mig, sett ur ett rent produktivt perspektiv. Jag har inte gjort någon implementation utan har jobbat mycket med analys och design av systemet, jag har lite kört in i en svacka och har stångat huvudet lite mot hur jag ska bygga systemet. Men jag tror att jag har en plan nu, så det är bara att sätta igång.

Jag har fått möjlighet att göra labbarna i databaskursen till mitt projekt här, så mycket fokus kommer ligga på databasen också. Men det kan den må bra av, fördelen blir ju att jag får lite extra tid till hela projektet också.

Jag byter min sprint-period också, hoppar över gårdagen och kör tisdag-måndag istället. Så lägger jag in måndag som test-dag och tisdag (när vi har möte) som uppstartsmöte för varje ny iteration. Jag tror det blir bättre!

1 Comment

Inception

by dubbe on 7/04/2011

Här jobbas det på. Jag har börjat sätta mig in i wordpress och plugin-skapandet. Jag har nu skapat möjligheten att skapa events och att koppla ett (eller flera) datum till dem. Det var inte alls så knepigt som jag trodde, vilket gör mig glad.
Det jag har att fundera på just nu är testning för wordpress-plugins, där har jag hitta nåt som heter WP-unit som tillåter unit-testing på pluginen. Det kräver dock att jag skriver om min kod lite, men det ska jag göra i alla fall…

Mina stora problem just nu är hur jag ska utforma skapa-event sidan och vad/hur jag ska koppla allting mot API’t… Hur mycket som jag ska spara i den lokala databasen och hur mycket som bara ska sparas i API’t. Jag ska nog försöka boka ett möte med min kamrat och se om vi kan bolla lite ideér…

No Comments

1DV430 – Introduktion

by dubbe on 1/04/2011

Jag har tyckt att det varit så roligt att blogga under RIA-kursen att jag tänkte fortsätta göra det under det individuella mjukvaruprojektet som jag startar nu. Det blir som en liten publik utvecklingsdagbok hoppas jag.

Tanken är att jag ska göra ett event-hanteringssystem för wordpress med biljettförsäljning och möjlighet med kortbetalning. Exakt hur jag ska bygga upp alla delar vet jag inte riktigt ännu, jag har inte jobbat med wordpress-plugins tidigare så det blir en helt ny erfarenhet. Jag hoppas dock på att communityt skall vara så pass stort och välbyggt att det ska finnas mängder med information att hitta (det som oroar mig lite är att wordpress uppdateras så snabbt att det skall finnas en massa utdaterat material).

Vidare funderar jag på att låta eventen dels sparas lokalt på den enskilde wordpress-installationen, men också centralt på ”min” server för att kunna erbjuda ytterligare funktionalitet (så som betalning, automatiskt biljettutskick och liknande). Där funderar jag på att forstätta använda mig av node.js samt couchdb, men… Det är inte det första jag skall göra och jag är lite orolig över att använda en så ung teknik för något som kommer ha med penga-transaktioner att göra. Eventuellt blir det PHP och MySQL där också (det blir ju det jag kommer använda mig av till pluginet av förklarliga skäl).

De risker jag kan se right on the bat, och som jag skall ta tag i först är dels hur man skriver ett wordpressplugin, betalningsmöjlighet och eventuellt en plats-bokningsservice. Jag har pratat lite med mina kontakter inom teatern och just platsbokning får nog räknas som en extra-feature och inte som nåt baskrav.

No Comments

Steg 7 – Postludium

by dubbe on 28/03/2011

Så var det då slut.

Byggprocessen
Jag tyckte designfasen var oerhört svår eftersom jag inte har stödet av ooad-kursen (eller hur det nu kan förkortas). Jag fick läsa på väldigt mycket och de två veckorna rann iväg lite väl snabbt.
När jag sedan kom in i själva kodningsfasen kände jag mig betydligt mer bekvämare, det gick väldigt snabbt att komma in i hur man skrev node.js än vad jag trodde och det gällde nog generellt hela den fasen. Jag trodde jag skulle få kämpa mer med att komma in i syntax och kodningsstandarder för olika nya språk, samtidigt gjorde tiden att jag fick låta några saker stryka på foten, både i storleken av applikationen och vissa tekniker. Jag hade t ex hoppats kunna kika lite mer på jsDoc.

Det som varit största problem har varit dels varifrån jag skulle köra min applikation (det slutade med en vps) och installationen av serverprogramvara (jag tror jag spenderade två hela dagar med att installera node och olika versioner av moduler för att få det att fungera tillsammans). När sedan det var gjort har jag inte ens vågat göra en update på servermaskinen.

Applikationsresultatet
Är jag nöjd? Nja… Nej, det är jag nog inte. Jag hade hoppats i minsta fall kunna fixa buggen med att trycka escape på en pop-up ruta eller att tasks skall reagera på musklick på samma sätt som man fokuserar med tangentbordet. Men det har varit avslutning i tre kurser nu på samma vecka, så jag har helt enkelt inte hunnit med. (Och att byta namn på alla ”task” till uppgifter…)

Om jag bortser från det då? Är jag nöjd? Serverkoden är blev förvånansvärt enkel och generell (vilket iofs alltid är en strävan) så den är jag mycket nöjd med. Själva klientside-koden kanske blev lite väl förvirrande. Hade jag gjort det igen idag hade jag nog försökt stycka upp den koden ännu mer och kanske försökt skissa på lite tidigare på hur den skulle ha gjorts. Efter att ha kikat på lite sandbox-patterns genomgång låter det som om man kanske skulle försöka satsa på det istället.

Jag tycker designen på sidan får ett medlebetyg, jag är nöjd över uppgiftens väg genom applikationen (att en så simpel sak kan generera så mycket huvudbry). Efter diskussion med David är jag nöjd med att få till en tangentbords-styrning också, men jag tror att hela applikationen hade mått bra av att nyttja någon typ av event delegation, nu finns det lite för många onclick och onkeypress spridda runt om i koden.

Någon typ av template-system för javascriptet hade nog kunnat underlätta, istället för att skapa massa dom-objekt i kedjad jquery (även om jag finner någon slags sjuk tillfredsställelse i att göra det).

Dina lärdomar
Jag tror den största saken som jag blivit bättre på är just att sätta mig in i nya saker. Tidigare har jag ofta läst om någonting som verkat intressant, skummat lite på ytan men aldrig tagit mig tiden att faktiskt försöka använda mig av det. Det har funnits en tröskel jag helt enkelt inte orkat över. Nu visade det sig att den tröskeln kanske inte är så hög som jag först trott så det kommer nog hjälpa mig en hel del i framtiden.

Det har varit intressant och lärorikt att titta på både node.js och couchdb, två tekniker jag gärna jobbar mer med (förutsatt att det stabiliserar sig lite på modulsidan av node.js). Couchdb blev jag riktigt imponerad av, från att bara ha arbetat med MySQL var det en helt ny värld som öppnade sig.

Jade tror jag däremot får ligga och mysa någonstans långt bak i kunskapsbanken… Jag får kika vidare efter någon typ av template som är lite mer html och lite mindre ett helt nytt syntax bara för att… If it aint broken, don’t fix it!

Din relation till JavaScript
Sen webbteknik 1 har javascript och jag bara varit en kärleksaffär! Visst har vi haft våra ups and downs, men huvuddelen av dem har absolut varit ups. Det har varit väldigt givande att under en period nu få jobba med så väldigt mycket javascript, här i ria-kursen har jag kunna stretcha på mina kunskaper och försöka hitta lösningar på nya problem. Eftersom jag varit lärarhandledare i webbteknik 1 under samma period har jag där kunna bygga på mina baskunskaper, hittat nya lösningar på äldre problem vilket sedan hjälpt mig förbättra lösningarna på de nya problemen. Det har fungerat i en väloljad harmoni.

Jag kan känna redan nu att javascript är någonting jag vill fortsätta jobba med, lära mig mer om allting runtomkring och bli en ninja på jQuery… Jag tror det finns en fördel att läsa allt det här så tidigt i utbildningen för mig. Javascript är trots allt nånting jag kan ha med mig och använda i framtida projekt, så att det inte bara är någonting man lär sig som man sedan inte kommer använda på ett par år.

Kursen som helhet
Jag tycker det har varit en myket bra kurs, David har varit fenomenal! Det har varit väldigt lätt att få kontakt med honom (över skype eller yammer) och han har alltid kommit med bra tips och insikter på hur man lättast arbetar sig framåt. Upplägget av kursen har också det passat mig alldeles ypperligt… Det är intressant det där, hade jag fått en såhär ”lös” schemaläggning för 2-3 år sedan hade inte mycket blivit gjort… Men nånting har hänt mig som gör att jag nu tar tag i saker och ting på en gång istället för att spara det till sista kvällen. Jag måste ha blivit vuxen, äntligen(?).

Framtiden
Jag har mer och mer känt att jag vill satsa på en lärarkarriär under den här läsperioden, och i den tror jag det kommer finnas mycket javascript på ett eller annat sätt. Förutom det blir det en liten satsning på java framöver, där förhoppningen är att kunna skriva lite android-applikationer (jag har precis köpt en ny telefon). Där är jag dock så oinsatt att jag inte vet hur mycket eller lite javascript det kan komma att bli.

Vad gäller framtiden för D-do står den och väger lite. Jag hade egentligen tänkt försöka vidareutveckla den under nästkommande projekt-kurs. Men när nu några av klasskamraterna i den här kursen gjort pppp.nu dog min lust att utveckla en kopia lite. Så kommer jag inte på en nytt spår låter jag den nog bara falla i glömska (efter att jag fixat de där buggarna som annars kommer hålla mig vaken om nätterna).

6 Comments

Steg 6 – Fördjupning

by dubbe on 24/03/2011

Här kommer näst sista inlägget och förmodligen det största. Jag tänker i huvudsak gå igenom node och express.js (som är ett ramverk till node). I förbifarten kommer vi också snudda lite vid cochdb och jade. Cochdb är en databaslösning och jade är en template-lösning baserat på haml.
Tanken i det här inlägget är att jag från grunden kommer installera en node-server och sedan skapa en väldigt enkel blogg-applikation. Bara så att vi får en liten bild av hur det kan fungera. Jag kommer varva text med lite videoinlägg bara för att försöka göra det så lättsmält som möjligt.

Nämnas ska kanske också att jag kör ubuntu 10.10.

Introduktion till Node.JS
Node.js (http://nodejs.org/) är efter vad jag lyckats lista ut skrivet i C++ och låter dig skriva javascript på servern. Låter det flummigt? Ja, det är lite flummigt också. Det använder sig av V8 JavaScript motorn, precis som t ex Chrome, och vi vet ju alla hur bra Chrome fungerar… Vad är då fördelarna (Förutom att vi slipper slänga oss med ytterligare ett syntax)? Den absolut största fördelen har med prestanda att göra. Node kör i stort sätt allting parallelt och none-blocking (dvs att bara för att den gör ett anrop slutar inte allting annat att jobba bara för att vänta på ett svar). Man kan alltså köra alla sina queries på en gång och sedan ta hand om svaren när de kommer tillbaka (svaren stackas och tas om hand ett och ett). Så till skillnad mot många andra serverapplikationer jobbar inte node med olika trådar för att göra saker, tack vare det blir det också mindre prestandakrävande.

Node.js är också väldigt modul-baserat, det är bara att i början av koden slänga på de moduler man ska arbeta med och sedan kan de göra mycket av jobbet. Det är alltså enkelt att snabbt få igång en applikation (något vi ska kika på här nedanför).

Ja, det låter ju bra! Finns det några nackdelar? Jag skulle säga att den absolut största nackdelen är att allting är relativt nytt och inte så inkört än. Speciellt om man börjar blanda in andra moduler blir det snabbt lite svårt att hålla reda på dess kompabilites-krav. Många moduler finns bara i beta och är inte kompatibel med andra modulers senaste versioner och vice versa.

Men nog pratat om det, nu ska vi skriva en liten blogg-applikation som jag har valt att kalla för simpleBlog (och den är verkligen riktigt simpel). Planen är att kunna göra det så jäkla enkelt att till och med en clown ska kunna förstå.

Steg 1. Föreredelser
Vi börjar med att installera node v.0.4.2 för den har fungerat bäst för mig tidigare. Känn er fri att installera någon annan version om ni så skulle vilja. För att installera node v.0.4.2 från github gör man följande:

sudo mkdir nodejs 
git clone https://github.com/joyent/node
cd node
git checkout -b v0.4.2 v0.4.2
./configure
make
sudo make install

Nu kan vi skapa en enkel hello-world applikation, nu kommer jag börja länka in lite demo-videos. Jag har haft lite problem med att spela in dessa och få de i ett format som youtube tyckte om. Så ha överseende för eventuella synk-problem mellan ljud och bild eller mindre glichar.

Men det är inte allt vi behöver för vårat. Vi behöver installera lite mer saker. Vi börjar med couchdb (som vi inte kommer gå in speciellt mycket på). Det är en databas-applikation som sparar allting som object och sedan använder sig av vyer för att sortera informationen .Den skickar dessutom allting som Json så den är väldigt praktisk att använda med en javascript-applikation. Den finns dessutom med i Ubuntus repositories så vi installerar den enkelt därifrån.

sudo apt-get install couchdb

Sedan installarerar vi npm som är en modul-hanterare för node

sudo curl http://npmjs.org/install.sh | sudo npm_install=rc sh

Och så installerar vi de moduler vi kommer behöva

npm install express connect jade

Här höjs ett varnande finger för de olika versioner som används, det uppdateras i ett rasande tempo och det är inte alls säkert att de nyaste versionerna är kompatibla med varandra.

När allt det är installerat har vi allt för att börja med våran blogg-applikation.

Steg 2. Skelett
Nu använder vi express för att skapa ett skelett-ramverk

express simpleBlog

Vi får då en färdig mappstruktur och några färdiga filer för applikationen.

.
./app.js
./pids
./logs
./views/partials
./views/layout.jade
./views/index.jade
./test
./test/app.test.js
./public/images
./public/javascripts
./public/stylesheets
./public/stylesheets/style.css

Jag kommer inte gå in någonting på testning eftersom jag själv inte har använt något sådant, så test-mappen och dess filer kan vi strunta i. Under public ligger alla filer som ska vara just publika, t ex js-filer, css-filer och även bilder. Under views ligger de olika vyerna vi behöver. Just nu finns en index-fil och en layout-fil. Det är layout-filen som är mest intressant och som vi ska kika lite närmare på. Förutom det skapas också en app.js vilken vi ska detaljstudera här nedan!

Steg 3. SimpleBlog
Nu ska jag skriva själva koden för våran simpleBlog, den är väldigt simple och det enda den ska göra är att att kunna skriva inlägg, redigera inlägg och ta bort inlägg. En simple CRUD helt enkelt. Håll till godo:

Del 1:

Del 2:

Steg 4. Slutord
Jag hade gärna velat komma in på lite mer avancerade saker som man kan göra med node.js, men tiden har inte riktigt räckt till.
För att få en liten inblick i authenticering kan man kika på ett tidigare inlägg som jag skrivit: http://dubbe.se/index.php/2011/03/08/steg-4c-authenticering/
Annars finns det fullt med andra resurser om just node.js, dailyjs har haft en artikel-serie om just det. Node.js, express samt mongdb, så man behöver verkligen inte ”begränsa” sig till couchdb.

Och en liten slutvideo för att ni orkat följa med mig ända hit!

Steg 5. Kod

Jag bifogar all kod i en liten fil här också, så kan man kika på den bäst man vill!
simpleBlog

4 Comments

Steg 5 – Användargränssnitt

by dubbe on 18/03/2011

Nu har jag ”gjort klart” användargränssnittet. Tanken är ju att jag ska fortsätta jobba med den här applikationen, så jag kan inte riktigt säga att jag är klar. Men tillräckligt klar för det här steget tror jag i alla fall.

Jag hade redan en övergripande stil-tanke när jag satte igång. Den har bara förändrats delvis under design-arbetets gång.

Kognition
Här är jag jobbat hårdast på att försöka hitta ”taskens” väg genom applikationen. Till slut landade det i en vänster till höger tanke, där en otilldelad task hamnar i kolumnen längst till vänster, aktiva tasks i mitten och färdiga eller borttagna task längst till höger.

Jag har också försökt kika på vad som skall vara klickbart och vad som ska vara flyttbart. Knappar har jag försökt hålla ett konsekvent utseende på och även tasks. Jag provade applikationen på David och fick några punkter som jag skulle åtgärda:

Visa ett nyskapat projekt automatiskt
Det var en funktion som jag tidigare tänkte på och sedan försvann det, det var dock en liten sak att åtgärda. Men som gjorde en stor skillnad

Kunna redigera task när man dubbelklickar på tasken
Det hade jag inte alls tänkt på, men det kändes självklart när jag hörde det. Fick lyfta ut funktionen från onclick som låg på länken så jag kunde återanvända den till en dblclick också. Men inga problem.

Min-height på containrar
Tidigare var det så att släpp-ytan för tasks i tomma containrar var väldigt liten (bara några pixlar), vilket gjorde det lite knepigt att släppa tasks i. Det åtgärdade jag enkelt genom att sätta en min-height på alla containrar. Kikade också på bakgrunden i samband med det och valde där en neutral grå bakgrund, men jag är inte riktigt nöjd med det. Får se om det blir någon skillnad.

Ta bort icon
Det valde jag att inte åtgärda alls, vill man ta bort någonting får man dra det till ta-bort (där ingenting tas bort utan allting sparas där, en funktion som skall läggas till är att kunna visa borttagna tasks).

Information som försvinner
Om man drar en task från antingen otilldelade eller mina task, till någon annan container så försvinner informationstexten. Det är inte en bugg utan en feature. Det kanske däremot inte är en så bra feature, men jag har inte riktigt bestämt mig hur man ska lösa det bäst… Man kan ju skriva väldigt lång informations-texter och jag vill inte visa den på tasks som antingen är klara eller ligger på någon annan. Det tål att fortsätta fundera på.

Design
Här har jag försökt hålla en så enkel och stilren design som möjligt, även här är tanken att tasken skall ligga i fokus. Jag har jobbat med css3 vilket innebär att det fungerar som bäst i de moderna läsarna (läs: inte IE8)… Jag har ingen tanke på att åtgärda detta i dagsläget. Det borde fungera bra med IE9 dock.

Jag har valt mycket svart och vitt med blått och rött som accentfärger, blått för några design-element och rött för vissa event.

Dynamisk grafik
Jag har inte så mycket dynamisk grafik alls. Det kändes inte alls rätt att stoppa in det bara för sakens skull. Jag har velat haft en så enkel och stilren design som möjligt. Det mesta dynamiken står möjligheten att flytta tasks för. Där använder jag jquery-ui, men det är också det enda jag använder det för. Alla andra design-element, såsom pop-up, formulär och drop-down är ”nyskrivna” av mig.

Accessibility
Innan jag pratade med David igår fanns det ingen Accessibility alls i min applikation. Men efter att vi pratat stod det klart för mig att jag var tvungen att ha något annat sätt att lösa gränssnittet som inte innebär drag’n’drop (även om det är väldigt snyggt). Jag har därför skrivit en lager för tangentbordsstyrning. Allting man kan göra med musen kan man nu också göra med tangentbordet tack vare lite egnaskrivna snabbkommandon (det enda man inte kan göra är att logga in).

Det absolut knepigaste här har varit vilka tangentbordskombinationer som man kan använda. Vissa är ju lite upptagna av systemet eller webbläsaren. Jag har testat på en linux-maskin med chrome och firefox, så det kan ju möjligen vara så att det fungerar sämre någon annan stans. Skulle någon hitta nåt sånt är det bara att hojta till.

Fortsättning?
Det finns några problem i applikationen just nu. Dels uppdateras inte task-information automatiskt, så är vi inloggade flera personer kan vi editera tasks oberoende av varandra och den som gör den sista ändringen är den som ”bestämmer”. Ett drömscenario hade varit att när jag flyttar en task så rör den sig automatiskt och i realtid på din skärm också. Det borde inte var omöjligt, men ingenting jag hinner implementera nu.

Det går i dagsläget inte ta bort vare sig projekt eller tillagda användare på ett projekt. Det är förmodligen inte så mycket kod att skriva för funktionaliteten. Men det är rätt mycke tanke innan, bara för att veta var den ska få plats i designen. Jag skulle tro att jag kommer behöva ordna någon typ av meny-system till de olika containrarna, kanske mer inställningar för projekt, det ska till flikar för scrum-hantering också. Så risken är att jag i framtiden kommer behöva göra om viss del av designen, men jag har försökt haft allting i tanke när jag gjort detta.

En läcker funktion som jag vill få in sen är möjligheten att återskapa ändringar i tasks och projekt, där får jag stor hjälpa av couchdb eftersom den sparar revisioner av alla ändringar. Problemet här är väl var och hur man ska kunna plocka fram revisioner (vilket kräver en massa tanke). Andra problemet är att det skapas en ny revision varje gång man flyttar en task, och den informationen kanske inte är den mest intressanta, så man skulle behöva filtrera det på något sätt.

4 Comments