Malek's Moorish Tales

Meanderings about life and technology

Web printing, an interesting way out ...

I have many times encountered the issue of allowing people to print some content from a web form, and usually the answer is one of the following painful and not very convincing solutions :

  • ActiveX : having an activeX component handle the printing of the info on the page . This is just one more thing from the COM deployment hell era ...
  • PDF : giving a link to a dynamically generated PDF has been, for quite some time, the best way out of the issue. most users do have a PdfReader, and it works ... the problem here is simply that you need server side processing of the info into a Pdf document, while the Pdf document is not part of the process at all (unless there is a requirement to let people save the doc whithout being able to modify it) ... this is a return to the Pluming era ...

Well, the main problem here is to be able to act on the client side, and do some rich functionnality ... wait a minute, there is something called Zero Touch Deployment, is there ?

The problem is, you are not supporting client that don't have a .Net Framework installed ... but, isn't that like Pdf ? the only difference is that .Net is newer, and is not on most people's machines, and does not even exist for many operating systems (yet). Well, I am lucky, because when I look at statistics of browser usage in Morocco (At least if I can trust the most visited portals), more than 95% of all internet users have machines with Windows 9x and up. Unix/Linux users are marginal, and pre-Windows 95 almost non existant ... I guess it is one time one has to be vicious, and pull out some scheme to make those users install CLR, and printing has made a great job of driving adoption of Pdf ...

So, here is the scheme : Have a smart client app that gets the info in HTML or XML (with XSLT) through a web service, and print it on the client. put that up on some highly visited site, where printing is an important functionality. Then, on the Web Pages, just test if the client has CLR , and if not(and is runing windows), redirect (with all due respect and info that he needs to install an app to be able to use printing) to .Net Framework redistribuatble installation (With code access security settings that will permit execution and printing, once again after having notified the user). Once the client has CLR, just redirect to smart client app, and pass the necessary request params that will allow the web service to retrieve the document.

Wait a minute, I tried to do this, but there is no way to pass params to the smart client app. Url formating will not let you pass command line args. If you pass request params, you have two issues : retrieving those params, and you can do that in different ways :

Environment.GetCommandLineArgs()  or  Environment.CommandLine

AppDomain.CurrentDomain.domain.GetData("APP_LAUNCH_URL")

That will give you the full Url, and you can parse it to get back your params. The problem now is that you have made the WebService proxy go crazy. It will try to see if there is a config file (for some obscur reason), and will be using your Url and appeding .config to it, and there is no way out. Not quite so,  thanks to Chris Sells and his article on msdn. You can add an HttpHandler to the application serving your smart client, so that it handles the .exe, and the .config...

There, you have completed the trick, and good luck hunting unCLRed clients ...

Suis je devenu un employé Microsoft sans le savoir ?

Suite à la création du User Group MugNet, il semble qu'un certain nombre de critiques se sont produites dans la le milieu informatique au Maroc. Si je ne suis pas, par nature, un polémiqueur, il y a cependant quelques réflexions qui me gènent. Par exemple, sur le group MarocIT, une remarque a été faite en ces termes :

Le .NET n'est pas reconnu actuellement comme un "standard
technologique international". Comme une initiative qui vise aux
développement des nouvelles technologies, c'est une bonne chose de
créer ce genre d'ONG. Cependant, si c'est sponsorisé par Microsoft
pour essayer d'imposer sa plateforme face à la concurrence farouche
des "open source", ca ca devient de la pub/sponsoring pur et simple
sans aucune valeur ajoutée pour notre pays !

Une autre remarque est carrément une attaque :

Je ne savais pas que .net était un "standard technologique international" ni que Microsoft avait le droit de faire de leur département marketing développeur une ONG!

Bien que le terme ONG me dérrange pour décrire un User Group, je ne comprend pas comment on a pu nous assimiler au département Marketing développeur de Microsoft. Comme je ne peux pas croire que quelqu'un va, par pure méchanceté nous attaquer avant même de savoir qui nous sommes, je suppose que quelque chose a dû être mal interprétée ...

Je peux penser à deux choses différérentes comme possible source de confusion :

1. Que l'on ait interprété .Net comme étant Visual Studio .Net

    Cela est le moins grave, car, effectivement, il est compréhensif que l'on puisse confondre la technologie .Net avec l'implémentation la plus utilisée sur cette technologie. Pour cela, je préfère, même si je pense que ceux qui lisent ces lignes le savent déja, préciser un peu ce qu'est la technologie .Net. Initiée par Microsoft, la technologie .Net, ou plus précisement la "Common Language Infrastructure", est une spécification proposée par Microsoft, HP,Intel, Fujitsu, ISE et Monash University, et standardisé par ECMA et ISO. Cette spécification est précise (Langage intermédiaire défini, spécification du Runtime, bibliothèques de classes, ...etc.). Les implémentations de cette technologie sont multiples, et les plus visibles sont la multitude de langages par différents éditeurs (Microsoft, Borland Delphi et C#, Sybase Python et PowerBuilder, ActiveState Perl, Fujitsu/Lahey Cobol et Fortran, les langages académiques tels que Mondrian, Haskell,  Component Pascal, Scheme, Mercury, ...etc) ainsi que le runtime Mono de Ximian (nouvellement filiale de Novell), les outils de développement (add-ins DB2 de IBM), et beaucoup d'autres.

2.Mon titre Microsoft Regional Director

   Si je n'ai pas souvent eu à m'expliquer sur mon titre, c'est que, en tant que consultant, je suis relativement connu dans le milieu, et même si je me sens proche de Microsoft, mes clients savent que je ne suis guère un fanatique des technologies de Microsoft. Ils savent que je suis totalement convaincu par .Net, mais que je suis là, avec eux pour d'abord aider au succès de leurs solutions, et que je ne recommanderais pas une technologie Microsoft si elle n'est pas un bon choix pour eux. Je comprend par contre que peut être, on puisse l'interpréter comme un titre donné à quelqu'un du département Marketing développeur de Microsoft (bien qu'un tel département n'existe pas en Afrique du Nord) ...

   Puisque je n'ai jamais expliqué, dans ce blog, ce qu'était un Regional Director, je le ferais en quelques lignes :

   - je suis un consultant indépendant (je gère mon propre business de consulting), je ne travaille pas chez Microsoft, ni pour le compte de Microsoft.

  •    je suis reconnu par Microsoft en tant que "expert" sur leur technologies
  •    j'ai des rapports d'échange d'information avec les équipes de développement de Microsoft (ceux qui développent les outils de développement plus précisément). Cela me donne accès à des informations confidentielles sur les technologies Microsoft, et me permet donc d'être très efficace sur leur technologies
  •    Je ne touche pas un centime de chez Microsoft (à part quand on me commande des interventions en tant que consultant ou speaker sur des évènnements)
  •    Je n'utilise pas que les technologies Microsoft (ne serais ce que pour des besoins d'intégration dans des milieux hétérogènes, ou pour des fonctionnalités où les technologies Microsoft ne sont pas bonnes ou n'ont pas les fonctionnalités voulues ...)

Au fait, c'est un titre qui m'honore, et qui est plus une reconnaissance de compétances de la part de Microsoft qu'autre chose...

دقات الزمن

ليكن ليلك نهاري

وفراغك ملء قلبي

روحي نائمة

تحت رماد حبك

 

كيف تتحمل عيناي رمشة ضوء

تقتحم صدري رمح أمل

ليمتلىء قلبي من جديد

 

من أين يأتي ضوء النهار؟

 

أختبىء حلف ظلي

أرفض تفاؤل قلب

ظننته لن يحيا

 

لم بيضت ليلي المحبوب

أخرجتني من جنتي

مأمني

وحدتي

 

أيتها النفس الآمنة

انبعثي في قلبي

كوني ثاني نفس

في كبدي

اختبئي في مغارة صدر

حتى تنجي من حكم

جائر

 

ومن دقات الزمن ...

Unfinished Rhapsody

Inner stillness

-Caged bird-

Halted time

 

Why rehearse ?

-Voiceless bird-

Silence rules

 

Why resist ?

-Hunted bird-

Destiny thrones

 

Letting go ...

-Wingless bird-

Wind blows

 

Thunder brain

-Walking bird-

Storming sound

 

Standing mast

-Singing bird-

born poem

Hymn to moderation

Satisfaction

When the heart trembles

-Shivering new born-

Not taken, not mothered

 

Uneedy

a heart without fear,

but the fear of fear,

and the lack of fear

 

Fair is a heart,

when it is not empty,

nor is it full,

ecstasy of moderation