Har nu experimenterat med programmet väldigt mycket på sistone eftersom det är klart och jag inte direkt har så mycket att göra efter att ha finslipat koden lite extra ;)
Så därför har jag lagt till // uppdateringar:
1. Nu får man redigera ärenden som redan besvarats.
2. Snabbare uppdateringar för datagriden.
3. Mindre lagg i laddningarna // effektiviserad kod.
4. Utloggningsfunktion
5. Meny med extra funktioner och gamla funktioner såsom:
.
Program: Visa alla ärenden (totalt), Visa: besvarade, obesvarade|, Uppdatera, Logga ut, Stäng av.
Hjälp: Hur? > Svarar jag, Redigerar jag, Stänger jag av?
Fel: Rapport.
Experimentellt: Visar ett snabbt meddelande som visar alla uppdateringar jag håller på med för programmet.
.
6. Lite fixar på hemsidan (design).
.
.
Detta är vad jag gjort den senaste veckan. Bloggen börjar kännas lång... som en...
Väntar fortfarande på att skolan ska fixa deras server så vi får in min MySQL server som ska vara åtkomlig för alla.
Har fått smaka på det nya viruset Cryptosporidium parvum och därför inte kunnat jobba mer på projektet. Dock har jag försökt så gott jag kunnat och försökt skapa ett installationsprogram för SaiC. Dock med mindre framgångsrika resultat.
Eftersom jag inte har något att göra kodmässigt på programmet så ägnade jag dagen åt design.
Många förbättringar har gjorts på hemsidans design, ny header, nya färger, mer fungerande och precisa SQL funktioner (PhP).
Efter att dessa skapats anpassade jag koden efter databasen och nu funkar allt som det ska.
Vad jag väntar på:
.
.
1. MySQL servern måste vara tillgänglig.
- För att lägga in min databas i den och arbeta mot den
2. Forma dbconn.php och MySQLCommands.CS efter den nya uppkopplingen.
- Detta för att programmets ska kunna skicka data in och ut genom programmet
samt hemsidan.
3. Fixa hemsidans kompatiblitet i Internet explorer.
- Grafikfel har uppstått när hemsidan ska renderas i IE.
Chrome och Firefox funkar.
.
.
Dessa småbuggar ska fixas till så fort som mysql servern är uppe.
Har övervägt en idé om att programmera ett program som installerar SaiC. Enligt skolan kan dom ge en standard till datorerna att ha programmet men om den tas bort, vad händer då? Eller om jag vid senare tillfälle väljer att sälja programmet? Vad händer då? Där kom min idé fram.
.
Har kommit upp med en prototyp med ett lite "mindre" avancerat gränssnitt och funktionalitet.
Däremot inget i koden är ännu relaterat till filer. Ska fixa det snart.
Problemen snubblar sakta in då jag testar programmet mot databasen med varierande innehåll.
Ett fel uppstod när man klickade på en tom cell, trots att den var tom så fick den öppnas. Fixade detta och
gjorde att man inte kan klicka på en cell som är tom istället för att kolla det senare.
Uppdaterade även så att programmet uppdaterar datagridfältet automatiskt när du besvarat ett ärende, samt auto stänger svarformuläret.
Med tanke på att jag hittills gjort all kod själv så är jag faktiskt nöjd med vad jag lyckats göra, med tanke på att allt funkar nu.
Loggen har nu nått en levnadsperiod på ca 6-7 veckor och har hittills fungerat relativt bra som logg för projektet.
Ska nu kolla upp lite småsaker som kanske kan bytas ut eller till och med ta bort det.
Sedan jag senast la ut ett inlägg har mycket såväl negativt som positivt inträffat. Vad som hänt var att jag designat den nya hemsidan och fixat med koden i både PHP och HTML tillsammans med Alexander Ljungström. Då kan man ju undra, vad är negativt? Jo en bugg uppstod när jag skulle använda XAMPP för att köra hemsidan på min laptop via Apache och MySQL funktionen den erbjuder.
.
Buggen gjorde att hela hemsidan försvann ur htdocs, helt utan spår och sedan tog den bort lösenordskrav på min mysql databas. Detta var väldigt negativt eftersom både programmet och hemsidan är beroende av dess funktionalitet.
.
Efter att ha återskapat strukturen på databasen fixat några templates så var jag klar och fick börja programmera en ny hemsida. Detta tog inte mer än ~5 timmar. När hemsidan var klar så började jag programmera PHP istället för html som tidigare använt.
.
Anledning till att den använder php är för att kunna kontakta databasen och hämta ut alla ärenden till hemsidan.
Hittills har allting funkat super bra och inga problem har blivit påstötta sedan dess. Alla projekt, program och källkod har nu blivit säkerhetskopierat till min nya externa hårddisk, dropbox, mobil, usb minne och stationära hårddisk. Samt att den ligger vilandes på min laptops interna hårddisk.
.
Småproblem uppstod även i datagridvyn när jag lät en kompis prova på den för att hitta en bugg. Oväntat nog lyckades han starta en ny ruta med ärendet utan att den hade innehåll överhuvudtaget, vilket enligt koden inte ska vara möjligt. Har därför satt en ny metod som funkar och blockar detta, samt informerar användaren att en tom cell blev markerad.
Under ett pass idag skulle jag starta XAMPP för att starta Apache, SQL för att kunna redigera hemsidan. Till min stora förvåning funkade inte länken till hemsidan, detta gav mig oro och jag började kika runt vad det berodde på.
.
Efter mycket grubblande och många svordomar upptäckte jag att XAMPP råkat göra något förfärligt. Min mapp som innehåller hemsidan var borta, SQL databasen var tömd och ingenting fanns kvar.
.
Blev sjukt förbannad och drog en kycklingsallad med Curry sås nere i fiket hos Muhammed, stressa ner och gick tillbaka till projektet. Eftersom jag av någon anledning hade glömt dokumentera strukturen på databasen fick jag återskapa databasen genom minnen och programmets kod (SaiC). När jag väl skulle logga in i databasen upptäckte jag att XAMPP även raderat lösenordskyddet på databasen. Fick därför köra MySQL Install service wizard (redigera installationen).
.
Nu är jag klar med strukturen av databasen och programmet funkar igen. Hade sparat hemsidan på mitt kära gamla USB minne men problemet var att den var från sitt första stadie och därför oredigerad, allt grafiskt framsteg, kod och annat plock var oredigerat. Därför kopiera jag över mappen AMS (hemsidan) till htdocs till XAMPP.
Hemsidan har nu gått igenom stora förändringar och samt fixat vad jag förr inte lyckats få fram.
XAMPP hade dock fått en extra bugg som gjorde det omöjligt att installera och använda apache efter allt detta hade hänt. Så den var tvungen att ominstalleras efter att ha byggt upp databasen igen.
.
En uppdatering i databasen har blivit att ta bort datumtid (datetime) från databasens värde på TimeAnswered till VARCHAR (text) i begränsad längd. Detta pga ett problem med att jämföra tider i hemsidans statistik som ska visas i indexet (hem).
.
Dagens citat:
A programmer knows he has achieved perfektion not when there is nothing left to add, but when there is nothing left to take away.
Lite problem uppstod när jag väl trodde programmet var klart.
Ett fel i ett globalt värde (ErrandOverView.LoggedInAs) funkade inte när man la in ärendet, fixade problemet ganska snabbt men så strulade emailen. Fixade alla problem.
Fixar:
1. Fixade så komponenternas storlek förändras beroende på fönstrets storlek.
2. Gjorde att cellernas storlek i datagriden förändras beroende på längden av dess innehåll.
3. Tog bort rating från ärendet. Ansågs onödigt och troligen inte användbart i framtiden.
4. Kontrollerade att programmet är skyddad från SQL injektioner, klarade testet.
5. Du kan bara se de ärenden som har med din kvalifikation att göra.
6. Fixade att när man klickar på ärendets fråga så följer alla värden med. Användarnamn, emailadress, fråga, tid inlagd och svarad.
7. Programmet uppdaterar ärendet med det nya svaret, samt att den försvinner från ärende listan in till svarade listan.
8. Man får se vem man är inloggad som i programmet.
9. Man kan logga ut.
10. Programmet minimeras till tray när man klickar på minimera.
11. Minimum size satt till lämplig storlek.
12. Färdig klass för MySQL frågor, inlägg osv. Sparade ca 60 rader kod (inräknat tomma rader).
13. Minimerat användandet av JBMySql och MySql.dll pga brist på säkerhet samt osäker kod (eftersom jag inte kan analysera den).
14. Fixat buggen med datagridden (identiska rader).
15. Dataträdet visar nu alla rubriker automatiskt när den kopplar upp mot databasen, samt hämtar innehållet.
Dessa småfixar gjordes idag (2010-11-09) och är nu fullt fungerande i programmet.
Programmet kommer inte uppdateras mer den här veckan utan kommer ligga och vila säkerhetskopierat på: extern, stationär, laptop och usb minne samt åtkomlig via min dropbox för att enklare kunna redigera projektet från plats till plats.
.
Vet att jag sagt att jag ska ta det lugnt med att uppdatera projektet. Dock gjorde fler uppdateringar idag.
1. Fixade så textboxar automatiskt (vid knapptryck eller hela ord) tar bort skadliga ord eller karaktärer ()/%(&?(#%) så att man inte kan skada programmet.
2. Fixade ytterligare en bugg som hittades i uppdateringen vid datagridden. Ersatte den med en knapp för manuell uppdatering.
.
.
.
.
Fixade med hemsidan så att den hämtar:
1. De 10 senaste ärendena och visar upp i indexet
2. Visar upp de 2 senast besvarade ärendena i en box längst ner
3. Visar statistik över: totalt antal ärenden, antal besvarade, och totalt mottagna denna vecka.
4. Fixade klart lite design
5. Fixade småbuggar i 1,2,3,4 och fixade ett problem med databasens tidsstämplar.
.
.
.
.
stora framsteg har gjorts på programmet. Programmet är nu inte bara säkert från Mysql injektioner utan är också mycket mindre buggig. Alla småbuggar som hittades lite här och var är nu borttagna.
Buggarna var:
.
1. Tappa kontakt med databasen, ny timeout satt. 30 sek väntetid max.
2. Befolkningen av dataträdet, ny kod används för att lägga in data från databasen.
3. Onödig kod, borttagen eller ersatt med bättre och mer användbar.
4. Globala värden för snabb konfiguration av programmet.
5. Metod och klasser för att spara på utrymme.
6. Designen uppdaterad igen, trevligare miljö att jobba i.
7. La in en animerad bild i layouten för att göra det en aning roligare.
8. Layouten begränsad till en minimum och maximum storlek.
9. Layoutens storlek förändras vid inloggning till större, här initialiseras 8.
10. Dataträdet förändrar sin storlek beroende på innehåll i dess celler.
11. Windows formen kan nu minimeras och hamnar i "tray" när den minimeras (till en ikon nere i höger).
-----När man klickar på ikonen i tray så maximeras fönstret igen.
12. Ersatt mer eller mindre mysql.dll och jbmysql med min egna dll fil: MySQLData.dll
13. Byta server och databas genom ip.
.
Nu är ärende hanteraren klar.
Påbörjar att göra ungefär samma framsteg på (bara nödvändiga) på programmet som lägger in ärendet.
Den nya koden verkar helt okej, inga oväntade felmeddelanden utöver dom som redan loggats. Den nya koden verkar svara väl efter att ha formats efter den äldre. Men varför bytte jag nu kod? Jo, för det finns några där ute som har problem med att låta bli andras databaser och program genom att "MySQL injekta" programmen.
Detta gör dom via fält som är uppkopplade mot databasen och som antingen returnerar eller lägger in data i den.
Ett format på den koden kan vara i ett lösenordsfält t.ex:
SELECT * FROM tabell WHERE password = '" + textBox1.text + "';";
men i textboxen kan det innehålla vilken kod som helst. Detta är vad vi försöker hindra. Koden kan därför vara:
SELECT * FROM tabell WHERE password = '" hej OR '' = '';
Genom den koden kan dom ta sig in i programmet utan användare.
På samma sätt kan dom ta sig in i databasen och sedan skicka kommandon till den för att ta bort databaser.
Därför har jag nu kodat om alla databasquerys till att använda en säkrare kod och därför motverka att det händer.
Kommer däremot inte längre på programmet nu. Måste ha en server.
Vad som är klart:
1. Koden
2. Designen
3. Ritningar och planer
4. Layouten
5. Dataöverföring
6. Säkerheten
Så nu måste jag bara pröva koden mot servern istället för internt i min dator.
Skolprojekt:
Info om mitt projekt:
- Mitt projekt går ut på att utveckla ett billigt program via gratis mjukvara. Dessa är då:
MySQL (databasklient)
C# (Csharp (objektorienterat programmeringsspråk i .Net framework)).
Syftet med detta är att:
1. Utveckla mina kunskaper som jag har i C#. Eftersom jag gått utbildning i det i 3 år nu, läst A, B och C programmering är det därför skönt med en utmaning så man kan se hur mycket man faktiskt gjort på lektionerna.
2. Skapa en billig mjukvara baserad på freeware.
3. Lära mig jobba under tidspress.
Vet hur jobbigt det kan vara att göra något sånt här på egen hand men trots det vill jag bevisa mina kunskaper jag faktiskt har.
Samt att det ser bra ut när man sen söker jobb såklart ;)
Vecka 45, Måndag morgon (01:45):
Har suttit och grubblat igenom lite kod, fixad snabbare lösningar, snabbare och enklare att ändra värdena kodmässigt. Byggde snabbt ihop ett program för att lägga in medlemmar/admins i databasen.
La dessutom in en 11 bokstav/siffror blandade som ett lösen (slumpas vid tillfälle genom en random generator (kodmässigt)) som inte kan redigeras. Detta är för att vi inte ska kunna ha simpla ord eller fraser som används av användare (såsom: Password, efternamn, Lösen, Abc123 osv).
Användaren måste dessutom starta på en viss fras, i vårat fall kommer den starta på OSDE (östersunds elev(ostersundelev).
Även här sitter jag nu och grubblar vidare i, försöker uppfinna en metod för att spara användardatan som blivit överförd mellan program och SQL till en text fil, med mer eller mindre stora framsteg. Alternativt kommer jag uppfinna ytterligare ett program som skapar ett excel-kalkyl över "Användarnamn", "Lösen", "Emailadress".
Detta är så vi senare kan lämna ut det till respektive elever utan att behöva rota/störa servern.
Har suttit och grubblat igenom lite kod, fixat snabbare lösningar, snabbare och enklare att ändra värdena kodmässigt. Byggde snabbt ihop ett program för att lägga in medlemmar/admins i databasen.
La dessutom in en 11 bokstav/siffror blandade som ett lösen (slumpas vid tillfälle genom en random generator (kodmässigt)) som inte kan redigeras. Detta är för att vi inte ska kunna ha simpla ord eller fraser som används av användare (såsom: Password, efternamn, Lösen, Abc123 osv).
Användaren måste dessutom starta på en viss fras, i vårat fall kommer den starta på OSDE (östersunds elev(ostersundelev).
Även här sitter jag nu och grubblar vidare i, försöker uppfinna en metod för att spara användardatan som blivit överförd mellan program och SQL till en text fil, med mer eller mindre stora framsteg. Alternativt kommer jag uppfinna ytterligare ett program som skapar ett excel-kalkyl över "Användarnamn", "Lösen", "Emailadress".
Detta är så vi senare kan lämna ut det till respektive elever utan att behöva rota/störa servern.
.
.
.
.
Uppdaterat -- tisdag
Har suttit och kollat igenom koden, hittade en bugg som gjorde att för varje (foreach) objekt i listan som sparades efter att ha lagt in innehållet från SQL tabellen. Buggen gjorde följande:
I tabellen existerade id 1,2 och 3.
Felet ser ut såhär:
Istället för att byta ut dom mot 1 2 3 så körde den direkt på 1, 3 gånger.

Försöker nu med en ny kod som sedan ska användas genom: SQLQuerys.dll (mitt kodbibliotek som kommer användas för att hämta alla sql resultat).

Koden jag har nu kan dock inte koppla upp lokalt... behöver få upp servern på skolan och sedan pröva koden mot servern.

Samtidigt som jag fixar eventuella småbuggar och färdigställer programmet med säkerhet efter att själv praktiskt utövat programmet.

Databastabellens utseende är följande:


Har nu gjort lite ritningar över hur programmet kommer funka. Finns här:
Nu är det lov, har stött på stora problem i programmeringen. Behöver en SQL server att testa programmet på men kan inte komma åt någon. Med den nya koden kan jag inte ansluta till en lokal server, detta pga att min
databas inte accepterar kontakt med externa uppkopplingar (från andra program utanför "localhost").
Sitter nu och grubblar vidare på detta.
Här tog det lång tid att verkligen hitta ett sätt att skydda databasen från såkallat "SQL-injektioner". Det är när någon via en uppkoppling till sql droppar eller redigerar databasen via sökfält eller inloggningsformer.
Lika här fanns det inga klara guider och jag fick igen bygga koden på egen hand. Kom fram till att se till att
om man söker eller lägger in eller hämtar information/data från databasen så måste den gå igenom en kontroll internt i programmet innan koden utförs. Detta skyddar databasen tillräckligt för att inte utsätta den för hot.
Har varit lite dålig på att blogga framstegen på mitt program, men här kommer en splitter ny uppdatering.
Efter att ha konsulterat den stora IT-samordnaren Fredrik Wigdén och kollat liten närmare på programmet så kom vi fram till nya uppdateringar för programmet.
(detta är då för ca 5 veckor sedan).
Vi kom fram till att vi skippar SMTP överföringen för ärendena och går rakt in på SQL databasen (MySQL) som vi sätter upp på skolans mysql server. Därefter kommer vi använda den för att kontakta och ändra ärendena.
SMTP är då alltså Simple mail transfer protocoll. Det är ett snabbt sätt utan att behöva koda mer än ca 6 rader ett snabbt sätt att utnyttja en SMTP server för att överföra mail. Såsom smtp.gmail.com. Och sedan måste såklart en definerad port sättas in, i vårat fall använde vi 587. Men sedan ändrade vi det och kör på SQL som sagt.
SQL databasens struktur är färdig kodad efter 1 timmes geniknöl gnuggande.
Vi kommer nu i vårat fall använda oss av 3 databastabeller under databasen: errand.
Tabell 1: Responsible (alltså för adminsanvändare).
Tabell 2: Members (specifikt för dom som ska använda detta programmet (eleverna))
Tabell 3: Errands (här läggs alla ärendena in och sedan uppdateras av C#).
Förrförra veckan (vecka 43) byttes komponenter och design ut.
Designen blev brutalt uppdaterad och mycket gjordes om. Hela
projektet började så gott som om här. Dels pga mitt USB-minne med hela projektet gick sönder, antar att man ska lära sig av sina misstag. Har nu så att projektet är synkat, kopieras på både usb och internt i laptopen.
Projektet börjar om, fredag vecka 43.
-Anledning till att vi gjorde om var pga nya kodningar (från SMTP > SQL). Därför gick det snabbare att byta design, komponenter och kod.
Designen som är ny syns nedan. Gamla designen är:
Logginskärmen:
Layout:
Som vi kan märka i jämförelse till förra har mycket förändrats.
Vad som tagit längst tid är såklart datagridview. Det var svårt då det inte fanns några tillgängliga
över hur jag skulle koda den för att kunna hitta ärenden via vanliga musklickningar.
Nyaste designen syns här nedanför.