Frontpage

Konsolen

För att effektivt lösa ett problem behöver man så mycket relevant information som möjligt om den miljö som omger problemet.

Här är en länk till det system som hanterar diagnostisk data vid programmering.

Länk: Konsol

Se till att du har så bra diagnostisk data som möjligt.

När man programmerar något behöver man ofta diagnostisk data. Det används vanligtvis för felsökning. Att ha bra information från systemet är värdefullt då det sparar tid vid felsökning eftersom diagnostisk data ger viktiga ledtrådar.

Olika programmering-miljöer (de verktyg du använder) har olika sofistikerade diagnos och debug-system. När det kommer till webutveckling räcker det för mig att ha ett bra verktyg för att kunna se diagnos-data. Webbläsarens inbyggda konsol fungerar, men här har jag externaliserat konsolen på så sätt att den körs på en server som kan ta emot data från en mängd källor.

Webbutveckling innefattar oftast minst två programmeringsspråk (ex. JavaScript och PHP). Med en extern konsol kan data lätt skickas från båda typer av system. Diagnos-data med JavaScript och PHP är svårt när dessa två ska kommunicera via nätverket (ajax). PHP kan inte skriva ut diagnos-data hur som helst i det fallet eftersom det stör data-trafiken från PHP till JavaScript. Sådan data måste bakas in eller skrivas ut i filer på serverns filsystem vilket är krångligt och utöver det uppkommer svårighet att se kronologiskt sammanhang mellan PHP och vad JavaScript rapporterar.

En extern konsol löser ovanstående eftersom alla parter kan skicka diagnos-data i realtid som samlas på samma ställe i kronologisk ordning. Därtill kan mer avancerad diagnostik skickas som att ex. inkludera inte bara databas-förfrågningar men också svara-data från databasen, varav konsolen kan presentera det i ett lätthanterlig och interaktivt gränssnitt. Exempelvis en knapp för att expandera svarsdata från databasen och rendera tabeller.

Som nämndes är det just interaktionen mellan klient (JavaScript) och server (PHP), över nätverk (ajax eller websocket) som kan vara svår att diagnostisera. Jag har haft problem på klient-sidan som jag långt senare upptäckte berodde på ett fel som låg i databasen på servern, men utan diagnostisk data behöver man ofta mödosamt behöva spåra felet genom systemets alla led. Med rätt diagnostik kan man däremot se felet direkt. Den externa konsolen jag skapat löser detta.

System

Konsolen består av en Node server. Servern är programmerad (i JavaScript) till att ta emot diagnostisk från olika källor. Servern i sin tur skickar datan till alla klienter som "lyssna" (är uppkopplade).

En Javascript klient som körs i webbläsaren tar emot diagnostiken och isar den (länk ovanl).

WebSockets används över nätverket via port 443 (dvs den krypterade web-porten), via Nginx som delegerar (agerar proxy) mellan klienten och Node servern.

Notiser

Web läsare har numera funktion för att sätta "breakpoints" och stega genom koden i realtid. (finns i webbläsarens "Inspect page"-verktyg).

Säkerhet gällande WebSocket etc

(Läs på...)

XDebug för PHP.

Vad gäller mer ingående debugging:

PHP-koden kommer vara ganska liten och okomplicerad del av systemet och antagligen inte värt att installera XDebug för.

Det räcker med bra system för diagnostisk data.