Lines of Code

Ik heb na drie dagen eindelijk alle business regels in het model gedeelte gestopt, de JPA erin gegooid en de relaties goed gelegd. De code om alles te testen is er nog niet maar hopelijk is er niet veel fouts aan ^^. Uit nieuwsgierigheid wilde ik eens weten hoeveel lijnen code ik al in me project heb. Omdat Netbeans zo’n plugin niet heeft, heb ik maar eventjes snel een LoC (Lines of Code) scriptje in elkaar geflanst in Perl.

Het LoC script: http://aiids.pastebin.com/u8LAxc9L

Het resultaat van me afstudeerproject: http://aiids.pastebin.com/MJbRLrbT

Advertentie

Java UI programming is frustrerend!

Ok, ik probeer een nice UI te maken in Java maar dit leidt al snel tot frustraties en on-Godvriendelijke woorden. Men zegt dat JavaFX beter is maar eigenlijk is dat ook zo’n ding dat niets verbeterd (misschien maar beter dat ze het stop zetten). Voor webdevelopment bestaan er tools als HTML en CSS waarmee je in no-time prachtige layouts kan maken. Dus waarom zitten wij eigenlijk in de 21ste eeuw nog te sukkelen met instanties te maken van Swing klasses of subklasses te maken ervan om een paar regels toe te voegen in de paint methode. Men zou beter eens kijken naar Flex! Daarmee maak je UI’s in een XML taal die je ook kan stylen (zelf weet ik niet hoe maar het kan dacht ik via CSS). Het taaltje zou er dan als volgt kunnen uitzien:

<j:frame>
<j:label>Dit is een label</j:label>
</j:frame>

Natuurlijk ook een hoop toegevoegde components want ik zit al uren te kloten om een BoxContainer te maken zoals in Flex.

Web applicatie > Software programma

Tijdens de ontwikkeling van het varkens programma in Java, ben ik beginnen twijfelen of ik het wel in Java zou maken. Het ontwikkelen van 1 venster duurt enorm lang, je moet eerst een compleet schema hebben voor je begint met ontwikkelen, layouten met Swing is een pain-in-the-ass (vooral omdat Swing nog eens oudbollig is qua layout). Enfin tal van frustraties tijdens het ontwikkelen die ik liever niet heb. Enkele dagen terug kwam pieterc met de opmerking

Waarom maak je er geen web app van?

Eigenlijk is dit nog geen zo’n gek idee. Stel dat ik mijn software ga deployen op de computer van het bedrijf, dan moet ik: Java installeren en MySQL server installeren. Ok, dit is natuurlijk een kleine moeite maar wat als het volgende nu eens gebeurd. Het bedrijf heeft andere gebouwen en daar staat ook een pc waar de software op moet werken. Dan ga je het kopiëren en terug deployen. Dit is natuurlijk weer extra werk + kosten voor het bedrijf. Er zit een bug in Java of in mijn software, dan moet er geupdate worden. Als je 10 versies runnen hebt, dan moet je ze alle 10 updaten => werk + kosten.

Natuurlijk heeft het bedrijf dan de kosten om een internet verbinding aan te schaffen en moet ik als web applicatie beheerder zorgen voor uptime, snelheid en veiligheid. Voorlopig maak ik de software als web applicatie maar laat ik nog localhost draaien tot ik het kapitaal + kennis heb om dit te doen.

Brainfuck interpreter in Java

Ik verveelde mij en op IRC waren ze bezig over Brainfuck. Dus besloot ik maar eventjes en interpreter te schrijven. Je kan de interpreter als volgt uitvoeren:

java -jar Brainfuck.jar code

Code is oftewel een string met Brainfuck code oftewel een file met Brainfuck code. Je hebt ook drie opties die je kan meegeven:

  • –help: toont de help
  • -cli: toont de input/output in console
  • -gui: toont de input/output in swing

En natuurlijk krijg je ook de download met daarin de source code.

Download: Brainfuck.jar (23.53KB)
MD5 checksum: 15ec0e53fd230f4c06cb7934a9ff2449
SHA-1 checksum: 3e9bf0615fef3f56ae8a637f36864217784cf503

MultiExplorer 2.1 ziet het levenslicht

Er is een nieuwere versie van MultiExplorer uitgekomen. Deze bevat gewoon twee extra data providers, een extra regel in de Configuration om de ZipDataProvider toe te voegen in je XML, de factory voor filetypes is verbeterd en een JDialog is verplaatst omdat hij showde wanneer hij logisch gezien niet moest showen.

In de nieuwe versie zie je één nieuwe data provider. De ZipDataProvider (zie vorige post) is standaard toegevoegd. Er is ook een data provider voor KHLeuven studenten. Ze kunnen met mijn programma browsen op de file servers zoals export, dropbox, je home folder, … Hiervoor moet je de config.xml openen (dit staat in .me map van je account) en volgende regel toevoegen aan <dataproviders>

<dataprovider>be.khleuven.s509679.vgo.me.dataprovider.KHLeuvenDataProvider</dataprovider>

En natuurlijk omdat je gisteren de broncode van ZipDataProvider kreeg, krijg je ook de broncode van KHLeuvenDataProvider.

http://aiids.pastebin.com/wBu2dqSy

Download: MultiExplorer2.1Final.jar (1,18MB)
MD5 checksum: 4afb336e379a72c428471beaaf88aa46
SHA-1 checksum: 8a61ac61a355891ff23b5eaf3581859f841495c1

Explorer zip files in MultiExplorer

Jaja :-) Heb net mijn UML eens getekend en afgedrukt op A0 papier. Daarnaast heb ik een extra klasse gemaakt zodat de lector zal zien dat mijn programma flexibel is. Helaas zit ik nog in de knoei met de classpath maar dit komt in orde. Hierbij de code van ZipDataProvider.

http://aiids.pastebin.com/5G5TxvNY

Ook de UML mag je ontvangen van mij.

Mindios final

Vandaag plaats ik de final versie van Mindios online. Je mag genieten van de 50+ screenshots. Je kan ook de war file downloaden. Installeer tomcat 6 en derby en je kan het boeltje draaien (mits je wat verstand hebt om de persistency.xml aan te passen. De broncode zit erbij voor de code liefhebbers.

Slideshow!

Download: Mindios.war (3,91 MB)
MD5 checksum: 8cd6cea86cb271787dcf433a5b42d3f2
SHA-1 checksum: 0250af96d4022ec8ddc96a3c49e68f3cf47e1ec2

Mindios project

Een week geleden had ik de layout gepost van Mindios en nu is het tijd voor een laatste update voor de release vrijdag of zaterdag.  Eerst en vooral zijn er heel wat dingen eruit gehaalt. Zo kan een project geen teams noch opdrachten hebben. Daarnaast kan een lid niet soliciteren op een advertentie omdat die er ook niet zijn.

Dit komt door tijdsgebrek ten eerste en ten tweede omdat ik gefrustreerd ben over JSP en Persistency. Het kan wel allemaal makkelijk zijn maar Persistency zorgt niet voor de relatie tussen de objecten! Dit moet manueel gebeuren. Ook bij het verwijderen van iets moet je dit goed in de gaten hebben want voor je weet verwijder je records totaal onverwacht. Ik vloek hier dan ook 1000 maal op die “technologie”. Simpele dingen als ON DELETE SET NULL kan niet met persistency. Ook wordt er om de haverklap een exception of 100 gegooid voor iets stoms. Zo heb ik 8 uur zitten zoeken op de TOPLINK-4002 fout. Het bleek dat ik de relaties niet gelegd had tussen objecten. De relatie lag in de database maar persistency kon het niet verwijderen uit de tabellen. Het kan misschien wel een uitstekende technology zijn maar niet voor mij. Geef mij maar de goeie ouwe SQL waar ik de regels manueel bepaal en de code voor de site zonder persistency maak.

Nu alles wat voorbij is, moet ik nog maar twee entiteiten (zes-tal JSP pagina’s en zes-tal controllers) meer schrijven. Ik heb wat screenshots bijgevoegd van het project. Tot ziens en tot de release van Mindios in JSP.

MultiExplorer 1.0 final release

Het is zover…de final release van MultiExplorer’s eerste versie. Er zijn nieuwe bestandtypes toegevoegd, een nieuwe beeld, opties bovenaan om bestanden/mappen te verwijderen, aan te maken, kopiëren, plakken en te hernoemen. Er zijn ook een aantal bugjes uitgehaald. De menubalk is ook weg omdat er maar één functie was, namelijk een nieuwe tab openen. Dit is vervangen door een plus-icoon-tab achteraan de andere tabs (inspiratie door Firefox). Foutmeldingen worden zoveel mogelijk zelf opgelost, de fouten die nog niet automatisch worden verholpen worden getoont in een venster met de boodschap. Standaard worden de bestanden van de huidige gebruiker getoont van deze computer.

De kopieer/plak functie werkt volledig maar heeft jammer genoeg geen progressbalk. Dus grote bestanden kopiëren kan lang duren. Wanneer je een bestand kopieert, dan wordt de “plakken” knop actief in alle tabs. Dit betekent dat je dit bestand kan plakken in alle tabs. Je kan gerust van PC naar FTP plakken en visa versa maar ook van PC naar PC en van FTP naar FTP. De functionaliteit hangt niet af van het soort data provider.

Wat komt er nog? Ik ga na de examens hier een Google project voor oprichten, ga wat uitbreidingen toevoegen:

  • Zoekfunctie
  • Mappen kopiëren en plakken
  • Progressbalk voor acties die aan het uitvoeren zijn (files deleten, plakken, van map veranderen, …)
  • JTable gebruiken in plaat van JList zodat het beeld “Tegels” de bestanden naast elkaar kan plaatsen.

Download: MultiExplorer2Final.jar (801 kB)
MD5 checksum: 4faa22f31e69de3727bc5d314e5690ec
SHA-1 checksum: 3974f30b574339522216d9412c501715aab48a03

MultiExplorer RC1

Jup jup, ik zit niet stil. Het gaat goed mijn MultiExplorer. Het enige wat ontbreekt zijn features als mappen aanmaken, bestanden openen met een extern programma afhankelijk van het type bestand,  kopieren/plakken van de ene tab naar de andere tab en een “Map aan het openen…” lader. Die lader is nodig voor verkenning via netwerk en dit traag kan gaan. Deze features worden zondag met de final release toegevoegd. Ditmaal een screenshot want de vorige keer was ik dit vergeten.

Download: MultiExplorer2ReleaseCandidate.jar (536 kB)
MD5 checksum: e50b8a18b55fcb515cb8983f667d45e6
SHA-1 checksum: b917c04f0d84331e7bbae22c2e481ada78b7eb01