01/01/2019 |
Admin |
C#
Créer une classe ForceWWW.cs dans le dossier App_Start de votre solution
namespace xxx.Web.App_Start
{
using System.Web.Mvc;
public class ForceWWW : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.RequestContext.HttpContext.Request.IsLocal)
{
string url = filterContext.RequestContext.HttpContext.Request.Url.AbsoluteUri;
if (!filterContext.RequestContext.HttpContext.Request.Url.AbsoluteUri.Contains("www"))
{
url = url.Replace("http://", "http://www.");
url = url.Replace("https://", "https://www.");
filterContext.Result = new RedirectResult(url, true);
}
}
base.OnActionExecuting(filterContext);
}
}
}
Puis dans la classe FilterConfig.cs, ajouter le filtre fraichement créé
filters.Add(new ForceWWW());
Lire >>
01/01/2019 |
Admin |
C#
Voici une méthode écrite en c# permettant de calculer la distance entre 2 coordonnées (latitude / longitude). Résulat en kilometres.
Idéal pour la géolocalisation mobile.
(Pour les fans de maths : http://en.wikipedia.org/wiki/Haversine_formula)
///<summary>
/// Get distance between 2 points in kilometers
///</summary>
///<param name="latitudePointA">Latitute point A</param>
///<param name="longitudePointA">Longitute point A</param>
///<param name="latitudePointB">Latitude point B</param>
///<param name="longitudePointB">Longitude point B</param>
///<returns>The distance</returns>
public static double GetDistanceBetween(double latitudePointA, double longitudePointA, double latitudePointB, double longitudePointB)
{
double dDistance = Double.MinValue;
// Convert coordinates to radians
double dLatAInRad = latitudePointA * (Math.PI / 180.0);
double dLongAInRad = longitudePointA * (Math.PI / 180.0);
double dLatBInRad = latitudePointB * (Math.PI / 180.0);
double dLongBInRad = longitudePointB * (Math.PI / 180.0);
double dLongitude = dLongBInRad - dLongAInRad;
double dLatitude = dLatBInRad - dLatAInRad;
// Intermediate result a.
double a = Math.Pow(Math.Sin(dLatitude / 2.0), 2.0) +
...
Lire >>
01/01/2019 |
Admin |
C#
Par défaut WebAPI retourne une liste de type IEnumerable.
L'avantage d'utiliser des requetes au format oData est de pouvoir "requéter" directement dans l'url (order by, top, ...).
Pour activer oData il suffit juste de remplacer IEnumerable par IQueryable.
Ne pas oublier l'attribut [Queryable] pour que le client puisse utiliser les requetes oData
[AcceptVerbs("GET")]
[Queryable]
public IQueryable<Contact> GetAll()
{
List<Contact> contacts = new List<Contact>();
Contact ct1 = new Contact ()
{
Name = "Pierre",
PictureUrl = http://www.serveur.com/images/pierre1.jpg
};
Contact ct2 = new Contact ()
{
Name = "Paul",
PictureUrl = http://www.serveur.com/images/paul1.jpg
};
Contact ct3 = new Contact ()
{
Name = "Jacques",
PictureUrl = http://www.serveur.com/images/jacques1.jpg
};
contacts.Add(ct1);
contacts.Add(ct2);
contacts.Add(ct3);
return contacts.AsQueryable<Contact>();
}
On peut maintenant utiliser ce genre de requetes : http://localhost:1003/api/contacts?$orderby=name desc
Lire >>
01/01/2019 |
Admin |
C#
Avoir rencontré plusieurs problemes de spam dans certaines de mes applications j'ai décidé de me pencher sur le sujet. Apres avoir étudié différentes solutions je décide d'utiliser l'API gratuite du site stopforumspam.
Elle est gratuite, simple d'utilisation et communautaire, c'est pourquoi il ne faut pas hésiter a envoyer la liste de ses potentiels spammeurs sur ce forum.
Il y a juste une limite de 20000 requets a ne pas dépasser par jour, ce qui est correcte.
Pour moi le nom d'utilisateur n'est pas assez fiable pour savoir si c'est un spam ou non. C'est pourquoi la détection va se faire premierement par l'adresse IP de l'utilisateur puis par l'email.
Cette API est tres fiable mais l'adresse IP peut etre lié a un autre utilisateur par exemple. Si vous voulez filtrer des commentaires je vous conseille donc de ne pas les supprimer mais de les marquer avec un tag IsSpam = 1
C'est cadeaux, voici la classe:
///<summary>
/// SpamChecker class
///</summary>
public class SpamChecker
{
///<summary>
/// Check if the comment is inside the spam list
///</summary>
///<param name="ip">The ip to test</param>
///<param name="email">The email to test</param>
///<returns>True if it's a spam</returns>
public static bool Check(string ip, string email)
...
Lire >>
01/01/2019 |
Admin |
ASP MVC
Ce post me sert de post-it pour avoir la liste des couleurs standards de windows 8
Couleur | RGB | Hexa | Apercu |
Violet (Purple) | 162 0 255 | A200FF | |
Magenta | 255 0 151 | FF0097 | |
Turquoise (Teal) | 0 171 169 | 00ABA9 | |
Citron (Lime) | 140 191 38 | 8CBF26 | |
Marron (Brown) | 160 80 0 | A05000 | |
Rose (Pink) | 230 113 184 | E671B8 | |
Orange | 240 150 9 | F09609 | |
Bleu (Blue) | 27 161 226 | 1BA1E2 | |
Rouge (Red) | 229 20 0 | E51400 | |
Vert (Green) | 51 153 51 | 339933 | |
Lire >>
01/01/2019 |
Admin |
Javascript
Supprimer tous les tags HTML d'une chaine de caracteres :
var stringWithoutHtmlTags = OriginalStringWithTags.replace(/(<([^>]+)>)/ig,"");
Utiliser replace all avec javascript, ex : Remplacer tous les points d'une chaine de caractere:
var chaineSansPoints = chaineAvecPoints.Replace(/\./g, "");
Replace(".","") remplacera seulement le premier point
Tester une date en jQuery avec une expression réguliere
- Fonction javascript
function testDate(str) {
var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);
return (m) ? new Date(m[3], m[2] - 1, m[1]) : null;
}
- Utilisation
if (testDate(date) == null) {
// Date false
} else {
// Date true
}
Tester si une chaine de caractere contient une sous chaine de caracteres (String contains substring)
if ($("#spnMessage").text().toLowerCase().indexOf("error") >= 0) {
…
}
Lire et obtenir le parametre dans une url (get query string parameter)
function getParameterByName(name) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
Ajouter et supprimer une classe en jQuery
$("#theTextBox").addClass('highlightErrors');
$("#theTextBox").removeClass('highlightErrors');
Déclencher
...
Lire >>
01/01/2019 |
Admin |
ASP MVC
(En cours)
Caractere - description | Entité | Decimal | Hexa | Apercu |
Fleche gauche (leftwards arrow) | ← | ← | ← | ← |
Fleche haut (upwards arrow) | ↑ | ↑ | ↑ | ↑ |
Fleche droite (rightwards arrow) | → | → | → | → |
Fleche bas (downwards arrow) | ↓ | ↓ | ↓ | ↓ |
Fleche droite gauche (left right arrow) | ↔ | ↔ | ↔ | ↔ |
Fleche entrée (carriage return) | ↵ | ↵ | ↵ | ↵ |
Double fleche gauche (leftwards double arrow) | ⇐ | ⇐ | ⇐ | ⇐ |
Double fleche haut (upwards double arrow) | ⇑ | ⇑ | ⇑ | ⇑ |
Double fleche droite (rightwards double arrow) | ⇒ | ⇒ | ⇒ | ⇒ |
Double fleche bas (downwards double arrow) | ⇓ | ⇓ | ⇓ | ⇓ |
Double fleche droite gauche (left right double arrow) | ⇔ | ⇔ | ⇔ | ⇔ |
Alpha (Grecque) | Α | Α | Α | Α |
Beta (Grecque) | Β | Β | Β | Β |
Gamma (Grecque) | Γ | Γ | Γ | Γ |
Delta (Grecque) | Δ | Δ | Δ | Δ |
Epsilon (Grecque) | Ε | Ε | Ε | Ε |
Zeta (Grecque) | Ζ | Ζ | Ζ | Ζ |
Eta (Grecque) | Η | Η | Η | Η |
Theta (Grecque) | Θ | Θ | Θ | Θ |
Sigle Copyright | © | © | © | © |
Coeur | ♥ | ♥ | ♥ | ♥ |
Lire >>
01/01/2019 |
Admin |
Sql Server
Si executeNonQuery retourne toujours -1, en général c'est une erreur toute bete liée a votre procédure stockée.
Si vous avez laissé le SET NOCOUNT ON le probleme est reglé, il suffit de supprimer cette ligne.
Cette commande indique a sql serveur d'arreter d'afficher le message contenant le nombre de lignes affectées
Lire >>