.

From the Blog

Oct
08
Posted by admin at 11:24 am

 

Cryptolicensing is a software licensing product that is mainly based on encrypted licences.

Cryptolicensing is flexible but has a bit of a counter-inuitive way of working if you are not familiar with it. It also requires quite a lot of configuration and even coding in some cases.

First things you need to know.

The Cryptolicensing Generator UI: is used for a few things:

- Create a .licproj file => this is actually the file that is saved whenever a setting changes in the UI
- Create the licenseservice
- Create licenses IF you are not using the licenseservice

the .licproj ( or .netlicproj as it is sometimes called in the documentation) is also saved in the app_data folder of the licenseservice. This file is used to generate licenses should you be using an e-commerce provider.

The .licproj/.netlicproj is not used in validation of a license on the client side. There is a ValidationKey for this. This validationkey can be generated in the UI by pressing Ctrl+K .

Since we live in the 21st centry we like to use automatic license generation. So here are the steps to take:

1. Open Cryptolicensing Generator UI. Create a new profile with the prefered settings

2. Optional: create a second profile for evaluation purposes. make sure the first profile is the active profile (you can do this by pressing the “save” button next to the dropdown of profiles)

3. generate the licenseservice

4. open up the licenseservice project in visual studio and modify as stated in the .chm documentation (search for “Configuring the License Service”)

5. modify LicenseService.cs as stated in the documentation (.chm file)  (look for subscription based licensing) and make sure the “UpdateLicenseTableOnNewOrder” is modified so that the license has an expire date (you can look in UpdateLicenseTableOnRenewalOrder for this) … this is necessary so that in each renewal a new license can be generated with a new expirationdate.

5. modify the “e-commerce” .aspx.cs file of your choice. by adding the e-commerce token (this is probably a secret key), if necessary ofcourse .. and the prefered profile you’ll be using

6. refer to LicenseService.cs from the “e-commerce” .aspx.cs file to save the generated license

7. copy the “e-commerce” .aspx.cs file and modify it or renewal licensing. refer to “UpdateLicenseTableOnRenewalOrder” (You need this so that each renewal can generate a new license…)

8. Go to your e-commerce website and make sure you set the notification url there to your licenseservice …/”e-commerce” .aspx

9. If your e-commerce company does not provide e-mail notification to the end-user, you need to code this yourself after generating the license, you will require an smtp server for this.

10. Modify the code of your software (that needs licensing) to use the sample code ( Applicensing – see method: “btnSubscriptionLicenses_Click”)

 

Whenever you change something in the UI, you need to re-upload the .licproj to the app_data folder of the licenseservice.

 

 

Apr
20

 

imperative programming is a way of programming where you define “How” things are supposed to be done. your code runs from top to bottom and by manipulating this flow you get what you want. For example “If a value meets a requirement” then “repeat an action for all items in a list”. The consequence is that you write code that defines how things should be done.

Declarative programming is a way of programming where you define “What” should be done. HTML is a good example here. in an html page you say what should be displayed, but you will never say how your browser should actually go about on displaying that. You are actually configuring everything. Even with css you are defining what things should look like without telling the browser that it first should render the pixels then should loop through all elements and give them a certain color… that’s not important, all you care for is that paragraphs have a green background.

Well, what is better?

- imperative programming languages have the advantage that you have a lot of flexibility and you can do a lot with not that much knowledge. The major advantage is that usually you’ll endup having a ton of code for some detailistic feature.

- declarative programming languages are different in the way that you usually have to configure more and you’ll have to know the language better. You’ll need to know the ins and outs. These types of languages usually have a certain scope and focus on that in order to keep the amount of commands and settings to a manageable amount.

2 major advantages of declarative programming in my opinion are the following:

- Managing the Zone or the Flow. When a programmer starts developing they usually manage a lot of information when writing software so a lot of focus is required. getting in the zone takes around 15 minutes and you easily fall out of this focus zone with small distractions and then it takes a long time to get back in to the zone. Declarative programming requires less of managing a lot of info but just knowing what configuration you actually need to change.

- Less code. Since declarative programming is more focused on a certain task you’ll notice that you will need less code to achieve the same thing in declarative programming then in imperative programming.

Disadvantage of declarative programming

- You actually need to know the commands and the settings that are available specific to the system. once you know these it can be as naturall as speaking but it’s harder to start developing… and also it’s harder to troubleshoot declarative systems if you don’t have the knowledge or experience.

 

In the past when people where starting to program, things were amazing. You could automate a ton of stuff. There was a high demand on software development.

Soon after, it became clear that it was very hard to manage a lot of code because when we write code, it’s not a human that reads it, it’s a machine, so we need to be very precise with the things we say to the computer and when doing so we get a lot of lines of code. A lot of times we get so many lines that many programmers couldn’t find their way anymore.

Over the decades new methodologies and design patterns came up to be used by many. A seperation of concerns has played an active role here. for example when are building an bookkeeping application, we make sure that the visual front end is seperated from the database stuff. This makes dividing work a lot easier and things won’t get as messed up as before. In Enterprise applications there can easily be several layers of an application for several reasons where Reusability and Responsability play an important role.

Productivity tools have become more and more important where we can (hopefully) easily navigate through code (if the architecture is somewhat transparent). And these tools are great.

many of these ways of working have helped developers all over the place. Initial setup usually takes longer but overall you’ll be able to manage your code more easily.

A while ago I saw this interview with Bill Gates and he said that he was dissapointed with the evolution of programming languages and it hasn’t move forward as fast as we had hoped.

From a developer point of view a whole lot has changed the last decade and is still changing but from a consumer point of view I guess I understand the thought.

Watching “Star Trek” you know that one day we might be having computers that just do what they have to do and if they don’t  Get It, we just tell them to “not do it that way”.

And maybe that’s something that’s missing in todays programming languages….

Instead of building all those productivity tools and Setting up a beautifull architecture with the best methodologies to manage a large amount of code…. maybe, just maybe it would be better to have an intelligent programming language that can find the problematic piece of code and modify it by pointing out a mistake (obviously human mistake at some point). At this point this would probably be years of work but who knows, maybe One day :-)

 

 

Dec
18
Posted by admin at 7:51 pm

 

JustCode is a productivity tool from telerik that helps refactoring your code, delivers code analysis and helps in error checking. On first sight it may seem that for MVVM there isn’t much available out of the box. But if you look a bit closer you will find that JustCode supports code templates and these allow you to create flexible code snippets. For example, you may want to implement INotifyPropertyChanged and generate a class property that uses the PropertyChanged function.

All you need to do is go to the JustCode menu item in Visual Studio, go to “options”, then select “Code Templates”, select “C#” and press “New” and lastly insert the following code template:

private $3=GET_ELEMENT_TYPE($1$)$ $1$;

public $3=GET_ELEMENT_TYPE($1$)$ $2=SUGGEST_NAME$
{
get {return  $1=SELECT_VARIABLE()$;}
set
{
if($1$ == value)
return;
$1$ = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(“$2$”));
}
}

Give the code template an acronim => I use   “In” (for I Notify)

in your class then press  “Shift+Space” and type “In” and you will find that a Property will be generated for you, where all you need to fill in is the field and property names. JustCode will automatically use your field name on several places where necessary. You can just press tab to move between the Three variables to fill in. Once done, just press enter.

Creating a property will take about 10 seconds, while otherwise it could take over a minute or even Two minutes in order to just type it.

 

Not that hard really, but lost some time with this because I tried to do this in the Original folder where the Original TFS was pointing to.

So, you can unbind your solution on any location, but once you’ve done this, copy your solution to another location so you can bind it with a different Team foundation system.

You can simply undind by going to File, Source Control , Advanced, change source control.

If this doens’t work you can also use a tool for it.

http://vsunbindsourcecc.codeplex.com

at this current time, you will have to rebuild it because the regex in the code isn’t correct. Just look at this post:

http://vsunbindsourcecc.codeplex.com/workitem/6

Sep
04
Posted by admin at 5:11 pm

5.44 billion euro’s is the price that Microsoft will pay for Nokia. What an amount and who would have expected this? Especially when you know that years ago they won their battle with Apple by Not being dependant on 1 producer.

Things may be a bit different this time. if you look at the 2007 d5 conference and listen to both Steve jobs and Bill Gates you’ll notice that there was quite a bit of doubt back then of what would be the best format for mobile devices. Either it would be software and hardware combined or it would be just the software that could overtake this market.

By taking this move it’s quite obvious that Microsoft certainly is starting to beleive in the latter. this is quite astonishing because they always presented themselves as a Software Company  and a platform delivery company. So has microsoft changed this much or are they playing a game of panic ball?

 

 

May
29
Posted by admin at 6:46 pm

Creating a custom control may be necessary in some circumstances where you want to persist a design pattern such as MVVM. In this scenario you will try to bind your data to your control and build it that way. In order to do this it is best to first create a class or WPF Custom Control. Like so:

Public Class CustomGrid:Grid{}

The next step is to work with a “DependencyProperty”. I’m not going to go in to detail about this property but if you do some research you’ll find that it delivers quite a bit of flexibility and will eventually allow us to bind data in design time.

publicreadonlystaticDependencyProperty MyPropertyValue = DependencyProperty.Register(“MyWrapperProperty”, typeof(TheTypeofContainer), typeof(CustomGrid), newFrameworkPropertyMetadata(new TheTypeofContainer(), OnCurrentPropertyChanged));

After this make sure you have an OnCurrentPropertyChanged Event handler in order to Build your control in runtime.

privatestaticvoid OnCurrentPropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e){ //Build your stuff here}

And last but not least, you will need a wrapper to allow design time binding towards the “DependencyProperty”.

//Wrapper for DependencyProperty

publicWerkplanningCollection ItemsSource{

get{return (TheTypeOfContainer)GetValue(TheTypeOfContainer);}
set{         SetValue(TheTypeOfContainerValue, value);   }

}

Once all this is finished you can just use a regular “Binding Path” in your Xaml file. Offcourse you will still need a resource that delivers the object to Xaml. (A ViewModel and a reference to this resource from your xaml file)

PS. “TheTypeOfContainer” is here the type or class that you will use as your datasource.

 

 

May
27
Posted by admin at 6:48 pm

 

Veel mensen zijn geïnteresseerd in een Ipad cursus omdat er zelfs nu nog vaak twijfel bestaat over hoe dit toestel kan gebruikt worden in een bedrijfsomgeving. Om te kunnen bepalen of de formaat van een ipad of tablet nuttig kan zijn is het belangrijk om de differentiërende factoren eens op te schrijven. Een belangrijk punt is de levensduur van de batterij. Dankzij dit hoef je je Ipad niet uit te schakelen net zoals je mobiele gsm en hoef je ook niet lang te wachten tot dat je tablet is opgestart. Zo kan je makkelijk oa. het nieuws lezen, je mail nakijken of de tv gids raadplegen. Een ander belangrijk punt is de schermgrootte van uw Ipad en het gewicht van de toestel. Dankzij dit gegeven is het heel gemakkelijk om je Ipad mee te nemen onderweg in tegenstelling tot een laptop of pc. Het belangrijkste punt van de Ipad is de grote “developers community” die er achter zit. Duizenden programmeurs werken iedere dag aan nieuwe applicaties die je gratis of voor een klein prijsje kan gebruiken. Al deze applicaties zijn mooi verzameld in de App Store en kunnen gemakkelijk gedownload worden. Deze applicaties zijn ook nog eens gemodereerd waardoor dat je je geen zorgen hoeft te maken over ongepaste materiaal of virussen. Je kan nog steeds gebruik maken van web applicaties op de Ipad maar deze kunnen geen gebruik maken van de “hardware acceleratie” zoals embedded applicaties dat kunnen. Daarnaast is het ook niet zo gemakkelijk om een web applicatie op te starten omdat je manueel een webadres of url moet intypen. Uiteraard kan je wel een webpagina als icoontje opslaan om het leven wat te vergemakkelijken.  De kracht van de ipad rust dus echt in deze applicaties. Meeste mensen gebruiken de ipad om voornamelijk games te downloaden maar er zijn ook heel wat applicaties die uw productiviteit kunnen verhogen, zoals office, evernote, enz… Een korte zoektocht op google of Bing kan u al snel verder helpen om goede bedrijfsapplicaties te vinden. Een van de weinige opmerkingen over de ipad komt meestal van techneuten. Deze toestel is ontzettend handig voor particulieren maar als techneut of geek kan je weinig configureren om de toestel beter te kunnen beheren. Akkoord, je kan gebruik maken van Icloud maar op bedrijfsniveau moet je al gebruik maken van een derde partij(zoals mobile iron) om al uw Ipads te beheren.

Ipad cursus, ipad opleiding, ipad training

Ipad cursus, ipad opleiding, ipad training

 

Wanneer je gaat programmeren, wil je je code schrijven in een werktuig die je zo goed mogelijk helpt bij het beheren van je code. Vele programmeertalen kan je gewoon uitschrijven in kladblok en in .Net is het niet anders. .Net is een gratis platform van microsoft en C# is een gratis programmeertaal van microsoft. Het is echter zo dat het veel gemakkelijker is te werken met een IDE, oftewel een integrated Development Environment. Dit is een programma waarin dat je je code kan schrijven en tegelijk kan je je code gaan omzetten naar machinetaal in enkele kliks.

Voor c# is de meest populaire IDE: “Visual Studio”, hier heb je ook meerdere versies van. Sommige versies zijn betalend, andere zijn weer gratis. Visual studio Express is volledig gratis en het enige verschil is dat je met de betalende versie iets meer werktuigen hebt om weer sneller je code te gaan uitschrijven. Uiteindelijk doe je hetzelfde met beide versies. Microsoft heeft niet liever dat je leert werken met hun werktuigen en stelt daarom ook een zeer lange trials vrij van Visual Studio.

Als je van plan bent om met open source talen te gaan werken zijn er heel wat andere IDE’s beschikbaar. Voor Java zou je onder andere Eclipse kunnen gaan gebruiken maar ook Netbeans. Daarnaast zijn er nog tientalle andere mogelijkheden.

Zelfs voor C# is het mogelijk om eclipse te gebruiken of monodevelop. Wanneer je gebruik maakt van monodevelop dan heb je het voordeel dat je applicaties ook werken op linux. anderzijds is het zo dat wanneer je mono met monodevelop gebruikt dat je niet de laatste mogelijkheden van .Net en C# kunt gaan toepassen. Voor deze cursus gaan we gebruik maken van Visual studio.

Dec
29
Posted by admin at 1:54 pm

Leren programmeren is niet zo moeilijk. net zoals je een taal gaat leren zoals het nederlands of frans is het leren van een programmeertaal een process van vallen en opstaan. In het begin gaat het moeizaam en heb je tijd nodig om de woordjes te combineren. Na een tijd ga je zonder dat je het volledig beseft vloeiend deze taal kunnen spreken.

Enkele voordelen van te kunnen programmeren is dat je applicaties kan bouwen voor jezelf, je werkgever en eigenlijk voor iedereen. Je kan applicaties bouwen voor pc’s, servers, mac’s, mobiele toestellen zoals ipad, iphone en android en daarenboven kan je met deze kennis ook webapplicaties en games gaan bouwen die je dan kan verder distribueren naar derden.

Voor dat we werkelijk beginnen met programmatie is het belangrijk dat we enkele termen leren. Tijdens deze stukjes opleiding ga ik C# gebruiken als taal. Dit is een moderne programmeertaal waarmee je ontzettend veel kunt. Zelfs meer dan vele andere talen. Het is echter wel zo dat C# out-of-the box alleen maar op microsoft besturingssystemen werkt. Het is echter mogelijk om met C# ook applicaties te bouwen voor andere platformen zoals de Ipad of android als je een beetje verder kijkt. Hier komen we later op terug.

Wanneer je gaat programmeren kan dit op enkele verschillende manieren. één manier van werken is door Imperatief te gaan programmeren. Dit houdt in dat we gaan bepalen hoe dat iets moet worden gedaan. Stel u voor dat we een lijst aan bedragen hebben exclusief BTW en we willen ge-automatiseerd een berekening 100 keer gaan uitvoeren om de btw er bij op te gaan tellen. dat zou betekenen dat we een “herhalingslus” nodig hebben die 100 keer een bedrag vermenigvuldigd met 1,21. Een ander Manier/Stijl van programmeren noemen we Declaratief programmeren. In dit geval gaan we niet zeggen “hoe” dat iets moet worden gedaan, maar we gaan gewoon zeggen wat we willen. Bijvoorbeeld “selecteer de eerste 100 bedragen incl BTW”. Een derde programmeerstijl zou kunnen zijn dat we spreken over werkelijke zaken ipv getalletjes en stukjes tekst zoals we gewoonlijk doen in programmatie. Bij Object geörienteerd programmatie gaan we spreken over werkelijke zaken die iets te maken hebben met de onderwerpen van de zaak. Als we een programma schrijven voor een autofabriek, zullen we dus spreken over auto’s en machines. Ieder van bovenstaande begrippen noemen we een paradigma binnen programmatie. Dit is een theorie of stijl binnen de programmatie. C# is een multi-paradigma programmeertaal. Dit houdt dus in dat we kunnen beschrijven “hoe” dat iets moet worden gedaan, “wat” er moet kunnen worden gedaan en daarenboven kunnen we heel betekenisvol gaan spreken over objecten.