Developer Dagboek #13 – Hulpprogramma’s

Developer Dagboek #13 – Hulpprogramma’s

Auteur: Danny Holstein

Als developer komt het regelmatig voor dat er herhalende taken zijn, zoals het maken van voorbeelddata, het voorbereiden van JSON of CSV data, het splitsen van tekst of het weer samenvoegen van tekst, afbeeldingen verkleinen en andere soortgelijke taken. Om tijd te besparen en herhalende acties te verminderen, kunnen er hulpprogramma's worden gemaakt. Het voert vaak te ver om allerlei taken door een AI-tool te laten uitvoeren die credits verbruikt. In dit nieuwe blogbericht worden een aantal hulpprogramma's besproken die in de loop van de tijd zijn gemaakt.

Text Splitter & Replacer met Reguliere Expressies

Alweer meer dan 10 jaar geleden was ik werkzaam als een webmaster van een Magento webwinkel. Een van de taken was om nieuwe producten toe te voegen en bestaande producten te updaten. De import en export van alle productdata was relatief eenvoudig te regelen door middel van CSV (Comma Separated values) bestanden. Het probleem deed zich voor dat niet alle leveranciers van producten er rekening mee hielden dat de producten ook via webwinkels verkocht worden. Maar al te vaak werd alle data op de 'grote hoop' aangeleverd (afbeeldingen, tekst, Excel bestanden, de informatie over de producten – alle data door elkaar) of in een enkel geval was er helemaal niets. Zonder hulpprogramma’s zou dit leiden tot veel handmatig werk om de data presentabel te maken voor klanten.

Nog langer geleden, meer dan 15 jaar geleden, heb ik mezelf verdiept in de programmeertaal Java (versie 6-8) door middel van het boek 'Introduction to Java Programming - eight edition'. Dit boek bevatte ook online supplementen, waaronder één die refereerde aan Reguliere Expressies en in het bijzonder het gebruik hiervan. Door middel van een relatief simpele tabel met voorbeelden heb ik Reguliere Expressies onder de knie gekregen. Een groot voordeel is dat Reguliere Expressies in vrijwel alle programmeertalen worden gebruikt. Deze techniek is overigens niet nieuw, maar bestaat al sinds 1951 en wordt dus al ruim 75 jaar gebruikt onder andere in de IT-sector. Het nut hiervan zag ik ook snel in, vooral wanneer er tekst gesplitst, vervangen of gezocht moest worden.

Een hulpprogramma dat ik veel gebruikte als webmaster van de Magento webwinkel was: 'Text Splitter & Replacer' dat gebruik maakt van Reguliere Expressies om tekst te vervangen en te splitsen. Onregelmatige patronen waren hier snel mee te weg te halen en te vervangen. Ook tijdens mijn huidige werkzaamheden als developer bij BEE-2B maak ik nog gebruik van dit handige hulpprogramma. Een aantal jaren geleden heb ik de Java versie van dit programma geconverteerd in een versie voor C#/.NET. De afbeelding hieronder toont ‘het verwijderen van regelnummers’ als voorbeeld, maar dit hulpprogramma kan ook voor andere doeleinden worden ingezet. De ‘Text Splitter & Replacer’ is een van mijn favoriete hulpprogramma’s doordat dit simpel in gebruik is, verscheidene taken effectief kan uitvoeren en doet waarvoor het ontwikkeld is.

text_splitter_and_replacer_in_action

Andere waardevolle erfenissen: 'Text Connector' en 'Compare Lists'

Het Java hulpprogramma 'Text Connector' doet het omgekeerde wat de 'Text Splitter en Replacer' doet, namelijk: het weer aan elkaar rijgen van tekst met of zonder scheidingsteken. Dit hulpprogramma komt van pas bij regelmatige patronen, waarbij de data netjes onder elkaar staat. In theorie is dit ook mogelijk met Excel (of Calc van Libreoffice), maar dat leidt tot andere herhalende acties, zoals het instellen van de functies en hoeveel rijen er samengevoegd moeten worden. Door dit hulpprogramma worden zulke herhalende acties voorkomen.

Een andere handige tool die ik jaren geleden heb gemaakt dat is 'Compare Lists'. Dit hulpprogramma dient ervoor om op een makkelijkere manier de verschillen in datasets te zien. Het gebruik is zo simpel mogelijk gehouden, waarbij de mogelijk verschillende data in tekstbestanden wordt geplaatst: de eerste lijst (old), de tweede lijst (new) en eventuele extra informatie (additional data). Wanneer het grote datasets betreft met honderden of duizenden records, dan is vaak niet met het blote oog de verschillen te zien. Het praktische nut hiervan was om zo spoedig mogelijk ontbrekende productnummers op te sporen. Ook tegenwoordig gebruik ik dit hulpprogramma nog wel eens om verschillen tussen datasets snel te kunnen achterhalen.

compare_lists_and_text_connector_applications_examples

Hulpprogramma's voor Angular: de migratietool en convert-to-interface

In eerdere blogberichten (in het bijzonder de blogberichten die gaan over het upgraden van Angular applicaties) is de Angular migratietool besproken. Deze tool neemt veel onnodig typewerk uit handen en komt van pas wanneer er geen bestaand migratiescript is. Ook dit kan gezien worden als een herhalende taak en hierbij is het ondoenlijk om handmatig iedere Angular applicatie te upgraden en meer up-to-date te krijgen met de meest gangbare programmeerpraktijken. Het alternatief is om Angular applicaties door AI-agents te laten moderniseren, maar deze tools kunnen zeer veel credits verbruiken.

Een ander hulpprogramma dat ik heb gemaakt en regelmatig gebruik, dat is een relatief simpel programma om C#-classes om te zetten in TypeScript interfaces. In een tekst bestand (de input) plaats ik alle C#-classes die omgezet moeten worden (gescheiden door een minteken wanneer het meerdere classes zijn). Het is een C# Console Applicatie dat handmatig 1x wordt uitgevoerd en vervolgens in de output-map kant-en-klare TypeScript interfaces maakt. Met CRTL + X (voor knippen) en CTRL + V (voor plakken) plaats ik deze TypeScript bestanden in het gewenste Angular project. In Visual Studio Code lichten deze nieuwe interfaces groen op waarmee aangegeven wordt dat deze nieuw zijn binnen de Source Control. Het enige dat nog gedaan moet worden is om de import-paden goed in te stellen. Het voordeel is dat er veel typewerk uit handen wordt genomen en over het algemeen de datatypes op een juiste manier wordt overgenomen uit de C#-class.

convert_to_angular_interfaces_application_example

Zelf iets beters in elkaar knutselen: PDF-bestanden splitsen en bewerken

Het bedrijf - ik zal verder geen naam noemen 🙂 - dat het PDF formaat voor bestanden heeft ontwikkeld, staat ook bekend om zijn geldzucht. Voor tekstuele aanpassingen, kleine wijzigingen en of andere minimale toevoegingen verschijnen er maar al te vaak schreeuwerige pop-ups naar een betaalde plugin en een link om hiervoor te betalen. Veel developers - waaronder ik - zijn echt niet genegen om voor zulke minimale aanpassingen te betalen. Omdat ik toch bekend ben met zowel Java als C#/.NET doet de mogelijkheid zich voor om iets 'beters' of in ieder geval iets veel goedkopers (gratis) zelf in elkaar te knutselen.

Andere Java en C#//.NET hulpprogramma's waar ik op terugval die kunnen hele PDF-bestanden uit elkaar halen, weer aan elkaar rijgen en of gewenste aanpassingen doen in de tekst en of afbeeldingen. Vaak is het maar 1 pagina die aangepast of veranderd moet worden. Deze pagina wordt eruit gehaald en bewerkt door een hulpprogramma. Deze hulpprogramma's doen wat de betaalde plugins ook doen, maar hebben als voordeel dat ze helemaal gratis zijn.

Het werken met afbeeldingen

Als developer wordt er ook veel gewerkt met afbeeldingen voor allerlei doeleinden. Een andere tool die is 'geërfd' dat is het Java hulpprogramma 'Lift Out Images' waarmee uit een grote hoop afbeeldingen (soms zelfs enkele GigaBytes) alleen de afbeeldingen eruit worden gelicht die nodig zijn. Het praktische gebruik hiervan is een leverancier die veel afbeeldingen in een enkele map (en vaak ongesorteerd) aanlevert. Het is vaak onbegonnen werk om uit een map met zeer veel afbeeldingen handmatig iedere afbeelding te kopiëren en te plakken. Met het hulpprogramma 'Lift Out Images' kan via een tekstbestand of de Textarea aangegeven worden welke afbeeldingen er uit de map gelicht moeten worden.

In verschillende projecten van BEE-2B wordt er gebruik gemaakt van de C#/.NET library: SixLabors.ImageSharp. Met deze library kunnen afbeeldingen worden verkleind en of aangepast. Wanneer ik afbeeldingen aan het genereren ben op Fotor.com, dan zijn de gegenereerde afbeeldingen vaak groter dan waar behoefte aan is. Met verschillende gespecialiseerde software voor afbeeldingen is het mogelijk om de grootte (breedte en hoogte, etc.) van afbeeldingen handmatig aan te passen. Voor mezelf vond ik het handiger om een C#/.NET Console applicatie te maken die alle afbeeldingen automatisch van formaat veranderd (vaak een hoogte van 800 pixels). Wanneer een afbeelding dan nog te groot is (en JPG het gewenste formaat is), dan wordt de kwaliteit iets verlaagd tot een minimale kwaliteit van 80%. Het voordeel van dit hulpprogramma is dat veel herhalende handelingen niet nodig zijn en er tijd wordt bespaard.

lift_out_images_and_image_resize_c_sharp_dotnet_examples

Tot slot

In dit blogbericht zijn een aantal hulpprogramma's nader besproken. Een andere leuke ondertitel voor dit blogbericht had ‘the tools of the trade’ kunnen zijn. Een aantal hulpprogramma's zijn al meer dan 15 jaar in gebruik en anderen zijn pas recentelijk ontwikkeld. Het voordeel van deze hulpprogramma's is het besparen van tijd en het voorkomen van onnodig typewerk. Voor bepaalde gelegenheden worden lokaal nieuwe hulpprogramma's gemaakt die eveneens veel herhalend werk uit handen nemen en op langere termijn veel tijd besparen. Het kan altijd 'sneller, beter en meer', maar het doel van hulpprogramma's is om bepaalde taken goed genoeg uit te voeren op een zo simpel mogelijke manier.