Introduktionskurs: Webbapplikationer i inbyggda system (IoT)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
papabear
Inlägg: 821
Blev medlem: 14 mars 2004, 03:27:12
Ort: Eskilstuna
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av papabear »

"... Här bör du använda klasser i klasser, dvs polymorfism. Deklarera klasserna i din konstruktör ..."

Först trodde jag du menade nästlade klasser, sen tänkte jag att det kanske var dependency injection du prata om. Men när jag fått tänka ett varv till så är det nog snarare så att du bara menar att dela upp koden i klasser.
Det är iofs vettigt, men det är inte polymorfism.
Användarvisningsbild
tecno
Inlägg: 27022
Blev medlem: 6 september 2004, 17:34:45
Skype: tecnobs
Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av tecno »

Så se så! Ut och lek! Skapa hemsidor nu!
Är det inte på sin plats att du visar dina egna alster?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av Al_Bundy »

papabear skrev:"... Här bör du använda klasser i klasser, dvs polymorfism. Deklarera klasserna i din konstruktör ..."

Först trodde jag du menade nästlade klasser, sen tänkte jag att det kanske var dependency injection du prata om. Men när jag fått tänka ett varv till så är det nog snarare så att du bara menar att dela upp koden i klasser.
Det är iofs vettigt, men det är inte polymorfism.
Jag är inte expert på namnge "data-saker". Men det är inte "dubbeklasser" i en fil jag menar. Jag menar att man har en klass och i denna klass finns det ett fält som är också är utav en klass.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av Al_Bundy »

tecno skrev:
Så se så! Ut och lek! Skapa hemsidor nu!
Är det inte på sin plats att du visar dina egna alster?
Vet du hur mycket jobb det är att skriva en hel kurs i text? Det krävs ofantligt många timmar. När jag var lärare så lärde jag mig att den bästa eleven är den elev som får en kort introduktion och sedan leker sig fram. På så sett så kan eleven start och testa och bilda egen uppfattning. Det är också den effektivaste sättet att lära ut - snabb och enkel introduktion. Det skulle inte fungera på gymnasiet, men här på forumet fungerar det utmärkt.

Jag är mycket införstådd att läsa sig till en kurs är drygt och svårt. Därför försöker jag endast visa lite enkelt hur man gör för att sätta upp projekt och få den första "lampan att blinka". Sedan är det upp till eleven att utveckla sig själv.

Den som är intresserad utav att lära sig att göra snygga hemsidor i Java kan följa denna tråd. Kommentera gärna om ni behöver någon hjälp. :)
TheUnreal
Inlägg: 115
Blev medlem: 4 september 2005, 16:04:57
Ort: Sundsvall
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av TheUnreal »

Vad tillför detta för möjligheter som inte finns om man helt enkelt kör lighttpd och, låt oss säga PHP?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av Al_Bundy »

Jag är inge PHP-erxpert. Men syftet med att utveckla hemsidor i Java är att du kan använda Java som körs på servern. Java har dessutom stort stöd bland vanliga metoder och många bibliotek.

Exempelvis så kan PHP inte bygga en hemsida som styr enkortsdatorer. Detta kan Java. Trots Java är ett gammalt språk från 90-talet kan hade sin största revolution vid år 2000, så är det ändå ett språk som används hos industrin för Java är stabilt och robust samt säkert. Detta kan du tacka Oracle för.

Idag så är Java öppen källkod och vi kan säkerligen förvänta oss nya versioner utav Java 12, trots att Oracle's Java 11 har nyss släpps. Det har med att den öppna källkodssidan har mer utvecklare än den stängda källkodssidan. Det finns två versioner utav Java: OracleJDK som kostar pengar och OpenJDK som är exakt som OracleJKD, dock utan uppdateringar, som är gratis om man får faktiskt tjäna pengar på OpenJDK.

PHP är ett bra språk. Jag väljer helst Java, men PHP fungerar. Java är byggt för applikationer på nätet.

Så låt mig svara på din fråga. Jävligt synd att man inte kan citera det sista inlägget på detta forum. Vad är det för ......som har gjort en sådan inställning? Skadar ju ingen att citera inlägget.

Hur som helst.
Vad tillför detta för möjligheter som inte finns om man helt enkelt kör lighttpd och, låt oss säga PHP?
PHP är ett gammalt och beprövat språk. Men som det ser ut idag så har PHP inte stöd för att styra enkortsdatorernars I/O pinnar.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av Al_Bundy »

papabear skrev:"... Här bör du använda klasser i klasser, dvs polymorfism. Deklarera klasserna i din konstruktör ..."

Först trodde jag du menade nästlade klasser, sen tänkte jag att det kanske var dependency injection du prata om. Men när jag fått tänka ett varv till så är det nog snarare så att du bara menar att dela upp koden i klasser.
Det är iofs vettigt, men det är inte polymorfism.
Har läst inte om dependency injection, men har aldrig förstått vad det innebär. Om du vill, så kan du förklara det för mig på en nivå för folk som inte begriper något.
Kulla
Inlägg: 1264
Blev medlem: 7 januari 2010, 10:06:11
Ort: Sandared
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av Kulla »

Du kan kontrollera gpio på samma sätt som du kan med Java, finns bilblioteker för allt.

https://github.com/ronanguilloux/php-gpio
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av Al_Bundy »

Är det någon som har kört fast? Någon som skulle vilja ha lite hjälp? :)
Användarvisningsbild
papabear
Inlägg: 821
Blev medlem: 14 mars 2004, 03:27:12
Ort: Eskilstuna
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av papabear »

Al_Bundy skrev:
papabear skrev:"... Här bör du använda klasser i klasser, dvs polymorfism. Deklarera klasserna i din konstruktör ..."

Först trodde jag du menade nästlade klasser, sen tänkte jag att det kanske var dependency injection du prata om. Men när jag fått tänka ett varv till så är det nog snarare så att du bara menar att dela upp koden i klasser.
Det är iofs vettigt, men det är inte polymorfism.
Har läst inte om dependency injection, men har aldrig förstått vad det innebär. Om du vill, så kan du förklara det för mig på en nivå för folk som inte begriper något.
Ptja, vi ska väl inte skriva ner den här tråden allt för mycket om det.
Men, i korta drag, eftersom du frågar så handlar det om att man inte vill ha beroenden till konkreta klasser.
Dels blir det lättare att anpassa programmet när behoven ändras och det är lättare att unit-testa mindre delar.

Om vi tänker oss att du har en klass som behöver kunna kommunicera med nåt på nåt sätt så kanske du gör nåt sånt här:

Kod: Markera allt

public class MyClass
{
   private SerialCommunication _serial;
   public MyClass()
   {
      _serial = new SerialCommunication();
   }
   /* ... */
}
MyClass är nu beroende av SerialCommunication-klassen, men so what? Det kanske kommer en SerialCommunication2, eller ett helt nytt bibliotek, eller varför inte ett krav som säger att datat ska gå nån helt annanstans?
Istället kan det vara fiffigare att injicera dina beroenden på ett eller annat sätt och programmera mot interface eller abstrakta klasser.
Ett sätt att göra det är att injicera beroenden via konstruktorn:

Kod: Markera allt


/*
   public class SerialCommunication : ICommunicationsChannel 
*/

public class MyClass
{
   private ICommunicationsChannel _com;
   public MyClass(ICommunicationsChannel ch)
   {
      _com =ch;
   }
   /* ... */
}
Sen kan man använda nåt hjälpmedel (IoC/DI container (Inversion of control/ dependency injection)) som bygger klasserna åt dig och ser till att mappa interface till faktiska klasser.
Att sen byta ut SerialCommunication mot nån annan klass blir då trivialt och kan göras via konfiguration av containern. Men exakt hur det ser ut beror på språk och container.
Man kan ju också utöka funktionaliteten, om vi tänker oss att vi vill skicka data åt två håll.
Bara att bygga en klass som implementerar ICommunicationsChannel och som i sin tur är tar två ICommunicationsChannel och delegerar inkommande anrop till båda dessa.
Men MyClass har ingen aning om detta och behöver heller inte ändras för att stödja fler kanaler.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av Al_Bundy »

Just din senaste kodsnutt burkar jag alltid använda mig utav. Man får en väldigt fin struktur på sitt program :) Tack!
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av Al_Bundy »

Till helgen tänkte jag gå igenom hur man läser temperatur på nätet.

Jag tänkte att vi skulle börja sätta upp detta projekt som räknar hela tiden. Detta projekt innehåller @ApplicationScoped, vilket betyder att den är en applikation som ALLA kan komma åt. Alla kan se detta tal. ApplicationScoped är viktigt när det kommer till en applikation som ska ständigt läsa in data till användaren. Istället för att hemsidan skall anropa en analog- till digitalkonverterare och sedan ska värdet hamna på hemsidan. Tänk om två eller är inloggad på hemsidan då!! :shock: Det finns ju bara en ADC!

Då passar Tråd och @ApplicationScoped perfekt! Låt logiken styra, inte hemsidan!
Markering_006.png
Jag har bifogat projektet. Packa upp det och sedan i Eclipse: File -> Import -> Exsitisng Project into Workspace och sedan pekar du på mappen som du har nyss packat upp. Testa starta upp projektet och sedan så stänger du ned din webbläsare i Eclipse. Vänta ett tag, sedan gå in i den ordinarie Webbläsare. Då ska du se att talet har ändrats till ett högre tal då webbapplikationen körs i bakgrunden i hemsidan :)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
maDa
Inlägg: 4073
Blev medlem: 11 november 2005, 22:13:16
Ort: Malmö
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av maDa »

Jag har inget emot Java & Tomcat, men det är bisarrt mycket mjukvara, komponenter och kod du behöver du blinka din lampa eller visa ditt värde (på en quad-core ARM dessutom).
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av Al_Bundy »

Det är enormt mycket C-kod också för att blinka med en lampa för ARM också. Plus massa krångel.
tokfan
Inlägg: 694
Blev medlem: 10 juni 2010, 14:05:13

Re: Introduktionskurs: Webbapplikationer i inbyggda system (

Inlägg av tokfan »

Denna tråd kommer jag spara och läsa igenom när/om jag blir bättre på programmering.
Den är ju guld!
Skriv svar