The solution for validating an email address (RFC compliant) in .net C#

It’s a common question : “How can I validate one email address” ?

There are 0b10 (2) types of developers : lazy and ignorant.

  1. Lazy people always wins, because they do not reinventing the wheel, they prefer to search already done API.
  2. Ignorant people will probably use Regexp (I love regexp but not in this case) or write a new algorithm, they could spend few hours or days to implement the full RFC, good luck !

So the code is obvisouly server side, and in .net :

try
{
   new HttpRequestMessage().Headers.From = "mail@foo.com";
   //here the mail is valid
}
catch(FormatException ex)
{
// here the email is invalid
}
Posted in Uncategorized | Tagged | Leave a comment

WinRT Apps : Slow Compilation when you add WinRT components : Solution

PROBLEM

When you create a Blank WinRT project (W8 or WP8.1) with Visual Studio, if you compile as it, it takes : 2 seconds => great !

BUT, if you just add a simple WinRT component library (winmd) as reference and build, it takes 12 to 15 seconds… => wt….???! (if you add a DLL, there is no problem)

Well, it’s not a good start for a project, I didn’t find anything on the Internet about this issue, but I’m sure some developers will burn their computer if they have this issue (maybe they already bought a new CPU ;) ?)

WHY ?

If you verbose the MSBuild log, you can see this line

> 10179 ms GenerateAppxManifest 1 calls

Ok GenerateAppXManifest is the CPU eater ! We have to found the solution…

SOLUTION

The Solution I found is to override the value AppxHarvestWinmdRegistration to false for MSBUILD in your App csproj, and to fill your AppxManifest .xml Extensions section as it was generated before in the Debug/Release directory – before this hack :) -.

1. open your project.csproj, and add :

<PropertyGroup>   <AppxHarvestWinmdRegistration >false</AppxHarvestWinmdRegistration> </PropertyGroup> <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />

2. Then, you have to update your AppxManifest.xml like it was before in the Debug/Release dir for the Extensions section (specially if you use the Background Audio or anything which communicate with the external process) :

<Package....

<Extensions>
 <Extension Category="windows.activatableClass.inProcessServer">
 <InProcessServer>
 <Path>CLRHost.dll</Path>
 <ActivatableClass ActivatableClassId="BackgroundAudioTask.MyBackgroundAudioTask" ThreadingModel="both" />
 </InProcessServer>
 </Extension>
 </Extensions>

Have a nice coding day ! 

@poppyto

Posted in Windows Phone 8, WinRT | Leave a comment

Solution to Empty Emulator List (plus 0x80070002) in Windows Phone SDK 8

Sometimes, Visual Studio fails and you can’t do anything. You can repair or reinstall but in this case it’s not works.

PROBLEM : You can’t see any Emulators on Visual Studio :

and when you try to compile it throws 0x80070002  (File not found exception) :

SOLUTION :

So there are missing files, I catch them with ProcMon and by using MultiTargetingConnectivity API (this is THE api which throws 0x80070002) They are here in this location C:\Users\[Your User]\AppData\Local\Microsoft\Phone Tools\CoreCon\11.0

They are :
- Microsoft.ServiceCategories.xsl,
- Microsoft.VisualStudio.ServiceCategories.xsl
- Microsoft.XDE.ServiceCategories.xsl
- Microsoft.TypeMaps.xsl

It can be difficult to retreive these files (I repaired reinstall SDK 8 with no luck, trying to remove 11.0 directory and reinstall etc) so as I’m a nice guy, you could find the directory 11.0 zipped here : Download the full directory 11.0, extract here and copy/paste the missing file in your directory.

Have a nice coding day :)
Stephane

 

 

 

 

Posted in Uncategorized | Leave a comment

Solution for blurry rendering with DirectX11 on Windows Phone 8

If you experienced a global blurry rendering on your screen when you use DirectX11 on your Windows Phone 8, you probably fails a thing :

The swapchain size must be the screen size (means portrait), not the landscape size.

So  :

swapChainDesc.Width = 800;//
swapChainDesc.Height = 480; // blurry rendering !

swapChainDesc.Width = 480;//
swapChainDesc.Height = 800;  // perfect rendering !

That’s all, take care !

Posted in C++ CX, DirectX 11, Smartphone, Windows Phone 8 | Leave a comment

Solution for Error ERROR_DLL_INIT_FAILED while Loading winmd file in Windows RT

If you experienced the Exception :

Error in the DLL (Exception from HRESULT: 0x8007045a (ERROR_DLL_INIT_FAILED))

The solution is simple : You have to remove the main function.(I know, why the fonction “main” is called with DLL? idk :))

Posted in C++ CX, WinRT | Leave a comment

Solution for Error CO_E_ERRORINDLL while Loading winmd file in Windows Phone 8

If you experienced the Exception :

Error in the DLL (Exception from HRESULT: 0x800401F9 (CO_E_ERRORINDLL))

The solution is simple : You Must Add the _WINRT_DLL flag in the compiler definitions.

Posted in C++ CX, WinRT | Leave a comment

Windows Phone Store 8 shows neutral titles instead of localized titles

Dear you,

I experienced a bug in the Windows Phone 8 Store : I localized my app titles with the AppResLib.dll (& mui) and the tiles title were ok in the phone but the WP8 Store shown only the neutral language title. (on WP7 Store only, it looks ok!)

SOLUTION

In the WMAppManifest.xml (WP8) or in the project settings (WP7), you have to uncheck generic language codes (as “fr”,”it”,”de”) and check all the sub-language codes like “fr-FR”,”fr-BE”,”it-IT”, etc. If you check both generic and sub-languages, this will not working.

CONCLUSION

For the moment : don’t ever use the generic language codes (if you used them in your old WP7 app, this will appears Ok on WP7 Store but incorrectly on WP8 Store)

That’s all and this works !

Complete thread here.

Posted in Uncategorized | Leave a comment

Avoid IIS locks/hangs because of static contents, and improve the IIS performances !

The best asp.net programmed web site could be not VERY fast. I mean, you could be dissapointed by the performances of your website if your IIS configuration is not optimized.

The problem

You have a website with the runAllManagedModulesForAllRequests property setted to true in web.config.
What this means ? Every requests will be handled by ASP.net ! So static contents will also be handled by ASP.net !

Real Situation

You published a new page with a big flv (30Mo) and a lot of people try to watch it simultaneously (like 20/30 people) : your IIS will be locked for a good while ! If you look at the process manager, you could see the CPU around 25%, and a lot of Threads in queue !
Because ASP.net is buffering every request in the Thread Pool and it is saturating. As you know the ASP.net Thread Pool max is by default 25 (you can change it) !

Wrong Solution

You could upgrade the Thead Pool max, but it’s the wrong solution, because you will consume so much more memory and ASP.net is delivering files after buffering (you have to wait a lot of time before downloading a huge file).

Good Solution

You have to disable runAllManagedModulesForAllRequests in the sub-directory like this :

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer> 
<modules runAllManagedModulesForAllRequests="false"/>
<staticContent>
<mimeMap fileExtension="." mimeType="application/octet-stream" />
</staticContent> 
</system.webServer> 
</configuration>

This will disable ASP.net for this subapplication.
The only problem is : you have to create a sub application (not a subdirectory) to do that.

So if your directory is /content and you don’t want to update all your ResolveUrl stuff:

– rename /content as /content2
– create a sub-application named “content” with the directory C:\website\content2
– add the web.config file

It should be working. To be sure, upload a huge file (like 2Go) in content2 (the real directory) and try to download it by :
– http://website/content/hugefile.zip
– http://website/content2/hugefile.zip

The first URL /content should deliver the file instantaneously, and the the second should take a huuuge time

Benefits

If all your static contents are not handled by ASP.net, you could feel a very very fast website, a general CPU decrease, even if there is a lot of people connected.

Stephane

Posted in Optimisations, SEO, Web | Leave a comment

Resolve the “‘Microsoft.Advertising.WinRT.UI.winmd’ contains duplicate types names”

Hi everybody,

I recently had an issue with the Microsoft Advertising SDK for WinRT.
I can’t compile without an error  (I found a tip – remove reference/compile/add reference/compile – but I can’t compile for making an app package).

The famous error is :

error APPX1712: The .winmd file ‘Microsoft.Advertising.WinRT.UI.winmd’ contains duplicate type names. Type ‘Microsoft.Advertising.WinRT.UI.AdControl’ is already registered with the in-process server ‘CLRHost.dll’.

1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\AppxPackage\Microsoft.AppXPackage.Targets(803,9): error APPX1712: The .winmd file ‘Microsoft.Advertising.WinRT.UI.winmd’ contains duplicate type names. Type ‘Microsoft.Advertising.WinRT.UI.XamlAdControl_XamlTypeInfo.XamlMetaDataProvider’ is already registered with the in-process server ‘CLRHost.dll’.

What the hell is ? It’s just a bogous statment, my project is maybe not typical : I use some library, and it seems the compiler does not like that.

HOW TO RESOLVE ?

I found a lot of posts on The Internet and non solve this issue. I spent a lot of time to find this :

1. Open with notepad the SDKManifest.xml in C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSAdvertisingXaml\6.1\SDKManifest.xml with administrator rights 
2. Edit this line   <File Reference = “Microsoft.Advertising.WinRT.UI.winmd” >
3 .Modify by <File Reference = “Microsoft.Advertising.WinRT.UI.winmd” Implementation=”Microsoft.Advertising.WinRT.UI.winmd” >
4. Recompile  and enjoy

That’s all, everything works perfect after that ;)

EDIT

Unfortunately, this works but the certification kit fails with that stuff (I mean advertising load in the DLL).

How to do : I referenced the SDK in the EXE, and Loaded in the DLL by Reflection the Type (Microsoft.Advertising.WinRT.UI.AdControl) referenced in the EXE.
Just a crappy stuff because of a bogus SDK : but it works and certification kit is happy !

Stephane

 

Posted in C++ CX, WinRT | 1 Comment

Le temps qu’il faut attendre pour les demande de réexamen de Google ?

Vous avez recu un mail du type :

Cher propriétaire ou webmaster du site http://www.******.com/,
Nous avons détecté que certaines des pages de votre site utilisent des techniques contraires aux Consignes Google aux webmasters.
Nous vous invitons plus particulièrement à vérifier les liens artificiels qui redirigeraient vers votre site dans le but de manipuler le PageRank. Ces liens factices peuvent être ajoutés, par exemple, dans le cadre de l’achat de liens visant à améliorer le PageRank ou de la participation à des systèmes d’échange de liens.

Nous vous encourageons à apporter des modifications à votre site afin de le mettre en conformité avec nos consignes relatives à la qualité. Une fois ces changements effectués, veuillez envoyer une demande de réexamen pour que votre site soit inclus dans les résultats de recherche de Google.
Si vous trouvez des liens factices qui redirigent vers votre site et que vous êtes incapable de contrôler ou de supprimer, veuillez nous fournir des informations détaillées dans votre demande de réexamen.
Pour toute question relative à la résolution de ce problème, veuillez consulter notre Forum d’aide pour les webmasters.
Cordialement,
L’équipe Google chargée de la qualité des recherches

 

Forcément vous avez fait le nécessaire avec l’outil de désaveu de lien puis vous avez envoyé votre demande de réexamen pour que la sanction soit levée.

Pour la première demande la durée de l’attente avant réponse : environ 1 semaine.
Pour les autres demandes, il faudra patienter un peu moins d’un mois.

Si tout se passe mal lors de votre première demande ça donne ça :

 

Cher propriétaire ou webmaster du site http://www.***.com/,
Nous avons reçu un message du propriétaire du site http://www.***.com/ nous demandant de réexaminer ce dernier afin de vérifier s’il est conforme aux consignes Google aux webmasters.
En examinant votre site, nous avons constaté que certains liens ne sont toujours pas conformes à nos Consignes relatives à la qualité.
Nous vous invitons plus particulièrement à vérifier les liens artificiels qui redirigeraient vers votre site dans le but de manipuler le PageRank. Ces liens factices peuvent être ajoutés, par exemple, dans le cadre de l’achat de liens visant à améliorer le PageRank ou de la participation à des systèmes d’échange de liens.
Nous vous invitons à apporter les modifications nécessaires au respect de nos consignes relatives à la qualité. Une fois vos modifications apportées, veuillez demander un nouvel examen de votre site en vue de sa réintégration dans les résultats de recherche Google.
Si vous trouvez des liens factices qui redirigent vers votre site et que vous êtes incapable de contrôler ou de supprimer, veuillez nous fournir des informations détaillées dans votre demande de réexamen.
Si vous avez d’autres questions relatives à la résolution de ce problème, veuillez consulter notre Forum d’aide pour les webmasters.
Cordialement,
L’équipe Google chargée de la qualité des recherches

 

Et si tout se passe bien, vous recevrez ce mail tant attendu :

 

Cher propriétaire ou webmaster du site http://www.***.com/,
Nous avons reçu un message du propriétaire du site http://www.***.com/ nous demandant de vérifier s’il respecte les consignes Google aux webmasters.
Une intervention manuelle sur votre site avait été effectuée, car il ne respectait pas nos Consignes relatives à la qualité. Suite à votre demande de réexamen, nous avons procédé au retrait de cette sanction. Notez qu’il peut s’écouler un certain temps avant que nos systèmes d’indexation et de classement ne reflètent ce changement.
Le classement de votre site dans les résultats de recherche peut toutefois être affecté par d’autres paramètres. Les ordinateurs de Google déterminent l’ordre dans lequel apparaissent les résultats de recherche à l’aide d’une série de formules appelées algorithmes. Chaque année, nous apportons des centaines de modifications à nos algorithmes de recherche. Par ailleurs, nous prenons en compte plus de 200 paramètres différents pour le classement des pages. La mise à jour de nos algorithmes ainsi que l’évolution du Web (votre site inclus) peuvent donc expliquer les fluctuations que vous avez constatées au niveau du classement de votre site. S’il n’apparaît pas en bonne position dans les résultats de recherche, nous vous invitons à consulter cet article pour diagnostiquer le problème.
Merci de nous aider à préserver la qualité de nos résultats de recherche.
Cordialement,
L’équipe Google chargée de la qualité des recherches

 

Bonne levés de sanctions à toutes les sociétés qui ont achetés du mauvais SEO…!

Posted in SEO | Leave a comment