NModules

Til den seneste version af NMapper’en har jeg haft brug for en modul styrings komponent. Det er der kommet NModules ud af.

I NModules kan du registrere flere interfaces. NModules gennemsøger så en mappe for dll’er og finder alle de klasser der implementere et registreret interface. Ud af de klasser kan NModules så lave instanser som kan bruges som var de hårdkodet i systemet.

NCache

Til den seneste version af NMapper’en, har jeg lavet et par nye komponenter. Det ene er NCache.

NCache bruges til cache håndtering. Man kan smide hvad som helst i den og få det frem igen. Som standard gemmer den de cachede objekter i 10 minutter, hvorefter den fjerner dem. Men den fjerner kun de objekter der er ældre end 10 min. så alle objekter er cachede lige lang tid.

Man kan selvfølgelig selv ændre hvor lang tid cachen skal gemmes.

Du kan læse mere om NCache her.

NMapper 1.0

Endelig! Efter utrolig lang tid, er det endelig lykkedes mig at få tid til at færdiggøre NMapper 1.0.

Der er kommet en masse nye features.

NMapper skal bl.a. ikke længere kende alle mulige og umulige versioner og udgaver af database systemer. NMapper er nemlig blevet modul baseret, så man selv kan lave en database manager der passer til den database man bruger. NMapperen skal nok selv finde og registrere manageren.

Ud over at have lavet database managere, har jeg også lavet cache styrring, så der skæres ned på trafikken til og fra databasen, samtidig med at svar tiden bliver hurtigere.

Det eneste jeg mangler nu er bare at skrive en masse dokumentation, men indtil den er færdig, kan du jo skrive herunder hvis der skulle blive problemer.

Læs mere her.

NLog v0.3

Så er der blevet tilføjet endnu en funktion til NLog.

Denne gang er der lagt en backup funktion i.

Denne funktion kopiere samtlige logs ud i en backup-mappe med url’en:

/Backup/[date]/[time]/Logs.xml

Oprettelsen af logs og entries er ikke ændret fra v0.2.

Kodeeksempler

NLogs.BackupLogs() // Tag backup af alle logs, fjerner alle entries i den originale og returnere true hvis backupen lykkedes og false hvis ikke.

NIPconfig 0.1

Så har jeg været i gang med C# igen. Da jeg ofte sidder på et netværk hvor jeg får en dynamisk IP-addresse tildelt, så er den eneste mulighed for at se informationer om mine forbindelser via ipconfig kommandoen i kommando-prompten.

Det er i og for sig også fint, problemet er blot, hvis jeg skal bruge informationerne i eksempelvis en socket forbindelse så er den eneste udvej et skrive af fra konsollen.

Derfor har jeg lavet en grafisk udgave af ipconfig, kaldet NIPconfig. Den viser ikke nær så mange informationer som ipconfiv /all, men det kommer.

Informationerne kan kopieres til udklipsholderen vha. en højrekliksmenu.

Programmet fylder ikke meget og kræver kun .NET 2.0 frameworket.

Du kan hente NIPconfig 0.1 her.

NLog v0.2

Så er der kommet en ny og forbedret udgave af NLog-komponenten. Denne gang er de fleste ting blevet automatiseret og hukommelses økonomien er forbedret en hel del.

XML-håndteringen er langt bedre end før og man kan lettere oprette og ændre i sine logs. Det skal kun laves skrives 2 linier for at oprette en entry.

Ligesom version 0.1 så kræver denne udgave .NET 3.5. DLL’en kan implementeres direkte i ethvert .NET system, med namespacet NLogClasses.

Kodeeksempler

Opret log:

NLog mylog = NLogs.CreateLog("TestLog");

Opret almindelig Entry:

Entry myEntry = mylog.CreateEntry("Test entry", false);

Opret fejl-entry:

Entry myEntry = mylog.CreateEntry("Test error", true);

Hent NLog v0.2

Spørgsmål og kommentare modtages gerne.

NLang – .NET Sproghåndtering

Jeg læste en artikel forleden omkring hårdkodede tekster som gør det besværligt at kunne oversætte et program til andre sprog. Derfor har jeg lavet en lille dll fil i C# som kan håndtere det problem.

Dll’en er ganske simpel og kan bruges med kun een linje kode. Ens tekster bliver hentet fra en xml-fil som jeg kommer ind på senere. Det er muligt selv at bestemme strukturen i sine programmer og sprog filer.

Du kan herunder hente en zip-fil med dll’en og xml-eksempler.

Eksempler på brug:

// Denne linje henter indholdet af xml-filen med navnet danish.xml
NLang.INLanguage dansk = NLang.NLanguages.Load("danish");


// Denne linje henter den tekst der svare til idéet angivet i []
string minTekst = dansk["mintxt1"];

Xml-filen der skal hentes skal ligge i Languages-mappen, men man kan kalde den hvad man vil og have lige så mange man har lyst til, man skal blot huske at ændre parameteren i Load() til det filnavn man vælger.

XML-syntaksen ser således ud:

<NLang>

<trans id="mintxt1">
<text>
Min Tekst 1
</text>
</trans>

<trans id="mintxt2">
<text>
Min Tekst 2
</text>
</trans>

</NLang>

Det id der er angivet kan man selv vælge hvad skal være man skal blot huske at linjen dansk[“mintxt1”] skal tilpasses så den passer.

Download NLang 1.0.

NLog – Log-system.

Dansk:

Jeg er i gang med et eksamens projekt, og har i den anledning haft brug for at lave et logning system til at styre ændringer i system og evt. fejl. Til det system vi arbejder med er log-systemet lavet som en integreret del af systemet, men jeg tænkte om ikke kunne laves som en enkelt dll der blot skulle implementeres. Jeg er derfor kommet frem til det vedhæftede resultat: NLog. NLog består af en dll-fil og et css-dokument.

Disse to filer skal ligge i samme mappe som projektet bliver kørt fra. DLL’en er lavet i .NET 3.5 frameworket og kan implementeres i alle sprog der kører i dette framework. DLL’ens namespace er NLogClasses.

DLL-en og css-filen kan distribures frit. Dog må dll-en eller css-filen skifte navn og indholdet af dll-en må ikke ændres!

Eksempler (C#):

// Indlæs alle logs:
NLog.LoadAllLogs(); // Skal køres for der oprettes logge eller poster!
// Opret Log:
// CreateLog(string logName); logName angiver loggens navn!
Log minLog = NLog.CreateLog("LogNavn");
// Opret log-indlæg:
// CreateEntry(string description, bool error); description er en beskrivelse af hændelsen.
// error er true hvis der er tale om en fejl og false hvis ikke.
minLog.CreateEntry("Beskrivelse",false);
// Find Log:
// FindLog(string logName); logName er navnet på den log du vil finde.
Log fundetLog = NLog.FindLog("LogNavn");
// Find indlæg:
// FindEntry(DateTime time); time er tidspunktet hvor hændelsen finder sted.
Entry minEntry = fundetLog.FindEntry(DateTime.Parse("01-01-01"));
// Gem alle logs:
NLog.SaveAllLogs(); // Denne opretter en xml-fil hvis ikke denne allerede eksistere.
// Følgende er en beskrivelse af properties:
NLog.Logs; // Returnerer alle logge.
minLog.Name // Returnerer navnet på loggen.
minLog.Entries // Returnerer alle entries i den aktuelle log.
minEntry.Descr; // Returnerer beskrivelsen af hændelsen.
minEntry.Time; // Returnerer tidspunktet for hændelsen.
minEntry.Error; // Returnerer om hændelsen var en fejl eller ej.

Download NLog 0.1.

English:

I am in the middle af an exam project, in which we had to built a log-system to manage alle events to go back and se what happened when. Our log-system is embedded within our entire system so it can only run in our system. I then began to develop this little log-system which is not embedded in any way and can be used when and where it should be. It is made on the .NET 3.5 framework and is a dll-file and it can be implementet in all systems using that framework. The appended file contains the dll and a css-file. These two files has to be stored in the same directory as the rest of the executables is.

The namespace of the DLL is: NLogClasses.

The dll-file and the css-file is free to distribute but you may not change the name of the dll or the css-file. The content of the dll must stay as is!

Examples (C#):

// Load all logs:
NLog.LoadAllLogs(); // Has to be run before creating any logs or entries!
// Create Log:
// CreateLog(string logName); logName is the name of the log!
Log myLog = NLog.CreateLog("LogName");
// Create Log-entry:
// CreateEntry(string description, bool error); description is a descripten of the event.
// If the event is an error the error parameter is true.
myLog.CreateEntry("Description",false);
// Find Log:
// FindLog(string logName); logName is the name of the log you want to find.
Log foundLog = NLog.FindLog("LogName");
// Find entry:
// FindEntry(DateTime time); time is the time where the event took place.
Entry MyEntry = fundetLog.FindEntry(DateTime.Parse("01-01-01"));
// Save all logs:
NLog.SaveAllLogs(); // This creates an xml-file if it does not already exist.
// Th folowing is a description of alle the properties:
NLog.Logs; // Returns all logs.
myLog.Name // Returns the name of the log.
myLog.Entries // Returns all entries in the active log.
MyEntry.Descr; // Returns the discription of the event.
MyEntry.Time; // Returns the time of the event.
MyEntry.Error; // Returns wether the event is an error or not.

Download NLog 0.1.