mercredi 20 novembre 2013

Sauvegarde de la base des données en utilisant transact Sql

Je me suis buté à un probleme tel que je en savais pas sauvegarder ma base des données en utilisant les outils de MS Sql Server management studio. Ca plantait à tout moment. Une autre solution a sauvé mon travail. j'ai utilisé des astuces de transact sql server. 

 --1 Declaration des variables 

DECLARE @name VARCHAR(50) -- nom de la base des donnees
DECLARE @path VARCHAR(256) -- le chemin de destination
DECLARE @fileName VARCHAR(256) -- le nom de fichier de sauvegarde
DECLARE @fileDate VARCHAR(20) -- used le ficher avec date




--2. Attribution des valeurs aux variables

-- specifier le repertoire de destination pour lequel sql server a le droit de lecture et d ecriture
SET @path = 'E:\MonsarWorkingSpace\Dossier\Destionation\'

-- specifier le format de date : exemple : 2013_11_20_19_54_12
SELECT @fileDate = REPLACE( REPLACE ((SELECT REPLACE(CONVERT(VARCHAR(19), GETDATE(), 120), '-', '_')), ':', '_'), ' ', '_')



--3. Place au curseur
 

DECLARE db_cursor CURSOR FOR 
SELECT name
FROM master.dbo.sysdatabases
WHERE name ='Nom de la base de donnéees' --Ici je sauve seulement une seule base des donnees
-- WHERE name NOT IN ('master','model','msdb','tempdb') -- Pour exclure les base des donnees dont on a pas besoi


OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @name  


WHILE @@FETCH_STATUS = 0  
BEGIN  
       SET @fileName = @path + @name + '_' + @fileDate + '.bak' 
       BACKUP DATABASE @name TO DISK = @fileName 

       FETCH NEXT FROM db_cursor INTO @name  
END  

CLOSE db_cursor  
DEALLOCATE db_cursor


-- For any question please contact me : monsar04[at]gmail.com

Installation de Shinken sous Debian Wheezy en quelques minutes

Shinken est une application permettant la surveillance système et réseau. Elle surveille les hôtes et services spécifiés, alertant lorsque les systèmes vont mal et quand ils vont mieux. C’est un logiciel libre sous licence GNU . Elle est complètement compatible avec le logiciel Nagios et elle a pour but d’apporter une supervision distribuée et hautement disponible facile à mettre en place

Cet article est apparu dans le blog de Patrick Lufundisu c'est don clui qui s'éxprime dans les textes.

Suivez la suite de l'article ici 

Cryptage et décryptage des mots de passe avancé 1

Il n'existe pas de solution définitive et universelle, tout évolue. Avant qu'on océan remplisse des grandes surfaces de terre, la première goute d'eau est importante.

Dans le précédent billet, nous avons abordé la notion de cryptage d'une maniere trop simple. Ce cryptage consiste juste à convertir une chaine de caractère en Base64String ce qui constitue un danger pour un système, un hackeur bien éveillé s'il acceder àla base des données, il peux simplement convertir le Base64String en string et directement il a le mot de passe. Cette methode ne doit pas vraiment être appellé cryptage mais une solution rapide pour proteger le mot de passe. Le vrai crytage consiste à avoir un algorithme de crytage qui vas servir pour cryter et décrypter le mot de passe. Il est difficile à un hacker de savoir l'algorythme de crypage car il ne l'a pas, bien sur ca peu lui prendre énormement du temps  ( meme 6 mois) pour etre en mesure de décrypter : rien n'est impossible en informatique c'est le temps qui crée les limites.





Dans cette demarche nous allons créer une classe qui contiendra l'algorithme de cryptage , ensuite nous allons appeller la classe dans la page souhaitée afin de crypter ou décrypter le mot de passe.


1. Classe  EncryptionPasswd



 public class EncryptionPasswd
    {
        public static byte[] Key = { 69, 75, 101, 56, 255, 46, 182, 135, 193, 155, 221, 154, 53, 178, 68, 56, 42, 11, 135, 145, 185, 28, 78, 49, 97, 168, 84, 117, 225, 130, 145, 65 };
        public static byte[] IV = { 54, 36, 255, 23, 165, 153, 88, 248, 175, 184, 198, 241, 175, 67, 69, 65 };

        //Cryptage
        public static string DecryptString(string src)
        {
            string strReturn = "";
            MemoryStream ms = null;
            CryptoStream cs = null;
            byte[] p = Convert.FromBase64String(src);
            byte[] initialText = new Byte[p.Length];
            int intIndex = 0;
            bool IsEndOfString = false;
            RijndaelManaged rv = new RijndaelManaged();
            ms = new MemoryStream(p);
            cs = new CryptoStream(ms, rv.CreateDecryptor(EncryptionPasswd.Key, EncryptionPasswd.IV), CryptoStreamMode.Read);
            cs.Read(initialText, 0, initialText.Length);
            while ((intIndex < initialText.Length) && !IsEndOfString)
            {
                if (initialText[intIndex] != 0)
                    strReturn += ((char)initialText[intIndex]);
                else
                    IsEndOfString = true;
                intIndex++;
            }

            return Convert.ToString(strReturn);

        }

        //Decryptage
        public static string EncryptString(string src)
        {
            byte[] p = Encoding.ASCII.GetBytes(src.ToCharArray());
            byte[] encodedBytes = { };

            MemoryStream ms = new MemoryStream();
            RijndaelManaged rv = new RijndaelManaged();
            CryptoStream cs = new CryptoStream(ms, rv.CreateEncryptor(EncryptionPasswd.Key, EncryptionPasswd.IV), CryptoStreamMode.Write);
            cs.Write(p, 0, p.Length);
            cs.FlushFinalBlock();
            encodedBytes = ms.ToArray();
            return Convert.ToBase64String(encodedBytes);
        }

    }


Vraiment, il faut beaucoup de temps, d’ingéniosité, un mental de résistant pour décrypter cet algorithme, il n'est pas si extra mais un peu costaud.


2. Pour crypter ou décrypter, il suffit d’appeler la classe  et le tour est joué, dans mon cas j'ai utilisé:
 




 protected void DisplayEncrypt(object sender, EventArgs e)
        {
            EncryptData.Text = EncryptionPasswd.EncryptString(Password.Text);
        }

        protected void DisplayDecrypt(object sender, EventArgs e)
        {
            EncryptData.Text = EncryptionPasswd.DecryptString(Password.Text);
        }



If any comment, please contact me at : monsar04[at]gmail.com

Merci :)







Simplement comment crypter et decrypter un mot de passe sous asp.net/C#

Crypter et décrypter un mot de passe sous asp.net/C#

Cryptographie, du mot latin crypto ( caché) et graphein ( caractère) est une technique qui consiste à cacher un message dans une serie des caractères. Il faut avouer que  la cryptographie ne date pas de nos jours, elle a commencé depuis des millenaires : les pigeons étaient utilisés pour envoyer les messages crypté dans les champs de batail...

En informatique :

- le cryptage ou chiffrement est l'activité de conversion de données ou d'informations en code ou une clé secrète.
- le décryptage ou déchiffrement est l'activité de faire comprendre ou conversion de code dans du texte brut.

Nous allons créer deux méthodes qui vont crypter et décrypter le mot de passe. Pour mon cas,
je crypte le mot de passe et je l'insere dans ma base des données, lorsque l'utilisateur veux
se connecter à mon system, je décrypte le mot de passe préalablement enregistré dans la base des données.




public string EncryptPassword(string textPassword)
        {
            //Crypter le mot de passe         
            byte[] passBytes = System.Text.Encoding.Unicode.GetBytes(textPassword);
            string encryptPass = Convert.ToBase64String(passBytes);
            return encryptPass;
        }

public string DecryptPassword(string encryptedPassword)
        {
            //Decrypter le mot de passe   
            byte[] passByteData = Convert.FromBase64String(encryptedPassword);
            string originalPassword = System.Text.Encoding.Unicode.GetString(passByteData);
            return originalPassword;
        }






 

Dans la base des données, j'aurai un mot de passe comme :TQBvAGIAYQBsAGkAMwAyAEAAMgAwADEAMwA= mais lorsque l'utilisateur vas se connecter le decryptage vas changer le mot de passe en Mobali32@2013 

Ce billet vous a t il aidé ? For any comment, please contact me at monsar04[at]gmail.com

vendredi 2 août 2013

Ombrage HTML5 / CSS3


Un exemple vaux mieux que mille discours :)

<div style="
     box-shadow: 0px 0px 10px 4px rgba(119, 119, 119, 0.75);
    -moz-box-shadow: 0px 0px 10px 4px rgba(119, 119, 119, 0.75);
    border-radius: 10px;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    text-shadow: 0px 0px 7px rgba(0, 0, 0, 0.75);
    color: #0080ff;
    font-size: 20px;
    -webkit-box-shadow: 0px 0px 10px 4px rgba(119, 119, 119, 0.75);
    width:300px; height:150px;
    padding:10px; margin:20px;">
        Bloc avec ombrage
    </div>



mardi 30 juillet 2013

Adding Row Number to SQL SELECT result

Cet article explique dans la simplicité comment récupérer les numéros des enregistrements lors d'un select avec sqlserver. Cette opération se réalise avec l'instruction ROW_NUMBER() : simple à utiliser. Voici un petit exemple :

SELECT ROW_NUMBER() OVER (ORDER BY EmployeeName) AS Row, EmployeeId, EmployeeName, Salaire 
FROM Employees :










Simple non :) . Si cet article vous a aidé , faites un signe : monsar04[at]gmail.com




jeudi 25 juillet 2013

Rafraîchir automatiquement un bloc d'une page en utilisant Ajax; C#, ASP.NET / Auto refresh a page using Ajax

A la manière de Facebook, il est simple de rafraîchir le contenu d'un d'un bloc d'une page sur un intervalle de temps déterminé sans pour autant rafraîchir la page entièrement. Cela permet de gagner le temps de chargement surtout quand on a des faibles débits comme en Afrique. Assez d'explications, un exemple vaux mieux que mille discours. Le projet complet est téléchargeable en cliquant juste ici. Que Dieu bénisse l'internet.


Géolocalisation web



Google géolocalisation 

La géolocalisation ou géoréférencement est un procédé permettant de positionner un objet sur un plan ou une carte à l'aide de ses coordonnées géographiques. Avec l'arrivé de google map, free map, ... Des besoins sont nés dans la géolocalisation web. Voici quelques références qui m'ont aidé à comprendre comment ça marche.


Ces solutions sont basées sur asp.net/C#/sqlserver/ajax. Très pratique et facile à réaliser. Que Dieu benisse l'internet !

mardi 12 février 2013

Contrôler les zones de texte vides en C#

Souvent , lors du remplissage d'un formulaire web,  certaines zones de texte sont obligatoires au remplissage. Nous essayons ici de montrer comment nous avons procédé pour souligner en rouge les zones de text qui ne que l'utilisateur du formulaire a oublié de remplir.

1. Partie asp


        <div>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        </div>

        <div>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        </div>

        <div>
            <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
        </div>


        <div>
         
            <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

        </div>



2. Partie C#


 protected void Button1_Click(object sender, EventArgs e)
        {
          //Créons la liste des text box



          List<TextBox> listTextbox = new List<TextBox>();

            listTextbox.Add(TextBox1);
            listTextbox.Add(TextBox2);
            listTextbox.Add(TextBox3);


        //Balayons la liste avec foreach


foreach (System.Web.UI.WebControls.TextBox textbox in listTextbox)
            {
                if (String.IsNullOrEmpty(textbox.Text))
                {
                    textbox.Attributes.CssStyle.Value = "border:1px solid #FF0000";
                    Msg_Form.Attributes.CssStyle.Value = "color:#FF0000";
                    Msg_Form.Text = string.Format("Tous les champs suivis d'un signe * sont obligatoires");
                }

                else
                {
                    Msg_Form.Text = "";
                    textbox.Attributes.CssStyle.Value = "border:1px solid #C1C1C1";
                }
}




Thanks to Gauthier K.

mardi 5 février 2013

Hauteur dynamique d'un bloc sans javascript


Souvent le contenu déborde du cadre dans lequel il est placé, ce qui ne donne pas une bonne image à l'internaute.

Sans utiliser du javascript, il est possible de rendre la hauteur d'un bloc (div) automatique; c'est-à-
dire qui change en fonction de son contenu. Dans l'exemple suivant nous avons un conteneur parent et un conteneur fils. La hauteur du conteneur parent vas changer de valeur en fonction du conteneur fils. On parle d'un conteneur à hauteur variable ou un div dynamic. Rien qu'avec du css.



Partie CSS

.div_parent
{
min-height:20px;
height:auto !important;
height:20px;
}

.div_enfant
{
height:100%;
}

Partie HTML

<div class="div_parent">

     <div class="div_enfant">
     Lorem Ipsum has been the industry's standard dummy text ever
since the 1500s, when an unknown printer took a galley of
type and scrambled it to make a type specimen book.
    </div>


</div>

mardi 8 janvier 2013

Installation et déploiement d'IIS 7 sous windows 7


IIS ou Internet Information Services, communément appelé IIS, est le logiciel de serveur services Web (ou FTP, SMTP, HTTP etc.) de la plateforme Windows NT.

Solution 1.

Pour installer IIS 7.5 sur Windows 7Vous pouvez effectuer cette procédure à l'aide de l'interface utilisateur ou d'un script. Utilisation de l'interface utilisateur

  • Cliquez sur Démarrer, puis sur Panneau de configuration.
  • Dans le Panneau de configuration, cliquez sur Programmes, puis sur Activer ou désactiver des fonctionnalités de Windows.
  • Dans la boîte de dialogue Fonctionnalités de Windows, cliquez sur Services Internet (IIS), puis sur OK.

Solution 2.


Un simple script peux suffir pour installer IIS ainsi ques ses dépendances :

start /w pkgmgr /l:log.etw /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-Security;IIS-BasicAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI



Bonne année 2013