Il faut être bien esquipé !
4 12 2011Aujourd’hui petit cours de cuisine Italienne, on va faire des antipasti :
Et n’oubliez pas, il faut l’huile elle est très chaude, que ça bouille bien !
Catégories : Non classé
Aujourd’hui petit cours de cuisine Italienne, on va faire des antipasti :
Et n’oubliez pas, il faut l’huile elle est très chaude, que ça bouille bien !
Voilà une petit astuce qui va faire gagner beaucoup de temps à ceux qui auront à galérer avec le réseau (programmation réseau avec des sockets, configuration de serveur web ou FTP…).
Sur windows, ont peut savoir quel programme utilise quel port en utilisant la commande netstat -ano :
netstat -ano Proto Adresse locale Adresse distante État TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4724 (serveur Apache) TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 788 [...] TCP 0.0.0.0:10243 0.0.0.0:0 LISTENING 4 (System) TCP 127.0.0.1:1029 127.0.0.1:1030 ESTABLISHED 2112 (teamviewer) TCP 127.0.0.1:1030 127.0.0.1:1029 ESTABLISHED 2112 (teamviewer) TCP 127.0.0.1:3306 0.0.0.0:0 LISTENING 1040 (serveur MySQL) TCP 127.0.0.1:3770 127.0.0.1:3771 ESTABLISHED 972 (firefox) [...] TCP 127.0.0.1:5679 0.0.0.0:0 LISTENING 2972 TCP 192.168.1.30:3889 173.194.66.106:80 TIME_WAIT 0 UDP 192.168.180.1:138 *:* 4 UDP [::]:500 *:* 1004 UDP [::]:3702 *:* 3088 [...]
Aujourd’hui les enfants, on va parler du fonctionnement des sessions en PHP, dans le détail.
Quand un client (navigateur) fait une requête HTTP vers une page de votre site qui utilise les sessions (permettant à vos visiteurs de se connecter avec un compte perso/premium par exemple), il va inclure dans cette requête HTTP, au niveau des headers, un cookie contenant ce qu’on appelle l’identifiant de session.
Exemple :
PHPSESSID=19a04504ad488ef391698e8caf906605
Le nom du cookie (ici PHPSESSID) est d’ailleurs configurable dans le fichier de configuration de votre serveur PHP : php.ini :
; Name of the session (used as cookie name). session.name = PHPSESSID
Bref, quand le serveur va recevoir cette requête, cet identifiant de session va être utilisé par la fonction session_start() qui va aller charger en mémoire la session (contenant tout un tas de variables que vous avez défini dans les pages précédentes) depuis un fichier. Et ce fichier peut justement être identifié en utilisant l’identifiant de session, tous les fichiers de session se trouvent dans un même répertoire (défini dans php.ini > session.save_path), et sont nommés de la sorte : sess_<identifiant de session>, dans mon exemple, le fichier va s’appeler : sess_19a04504ad488ef391698e8caf906605.
Pour comprendre, vous allez créer un petit script PHP tout simple qui démarre la session et va y enregistrer 2 variables : Lire la suite »
Si vous débarquez en .NET (ou en Java d’ailleurs) et que vous venez d’un bon langage pas casse couille comme PHP ou JavaScript, ça doit vous faire un choc :
Donner un type à ses variables, choisir parmi 36000 structures pour stocker l’information (Array, List, Hasttable, Dictionary, DataTable…), devoir importer des tonnes de trucs pour simplement trier un tableau par ordre décroissant…
Mais le pire, c’est sans doute le passage par référence. En PHP, pour dupliquer une variable (qu’elle soit un simple entier ou un objet très élaboré issu d’une classe que vous avez créé), il suffit d’utiliser = comme pour n’importe quelle affectation :
<?php $variable_originale = new MaClasse(); $variable_originale->nom = "Variable originale"; $copie = $variable_originale; $copie->nom = 'Une copie conforme et parfaitement disctince de $variable_originale'; echo $variable_originale->nom; // Variable originale echo $copie->nom; // Une copie conforme et parfaitement disctince de $variable_originale ?>
Mais en .NET, tout est passé par référence (sauf les types primitifs comme integer, boolean, string… qui eux sont passé par valeur), ça signifie que si vous faites la même chose qu’en PHP ci-dessus, quand vous allez modifier la variable copie, ça va aussi modifie variable_originale. Pourquoi ? Tout simplement parce que copie et variable_originale sont des pointeurs vers la même variable en mémoire, c’est en quelque sorte 2 noms différents pour la même variable.
La solution, pour dupliquer une variable, c’est de créer copie (en appelant le constructeur de MaClasse : copie = new MaClasse()), mais il faut alors recopier un par un la valeur de chaque attribut de variable_originale dans l’attribut de copie homonyme, l’enfer. En général on fait cela en créant une méthode Clone() dans la classe de la variable qu’on veut dupliquer, et en implémentant une interface de clonage comme ICloneable en .NET. C’est au développeur d’implémenter la fonction Clone().
Heureusement, il existe une solution toute bête pour créer une fonction Clone facilement : elle consiste à sérialiser la variable à dupliquer, puis à la desérialiser (ce qui reviendrait à faire un $copie = unserialize(serialize($variable_originale)); en PHP).
Voici donc une fonction permettant de cloner un objet en VB.NET (mais ça marche aussi en C#, il suffit d’adapter la syntaxe) :
Namespace Espace
<Serializable()> Friend Class AgriVar
Friend Sub New()
'[...]
End Sub
Public Function Clone()
Dim memStream As MemoryStream = New MemoryStream()
Dim bnFormat As BinaryFormatter = New BinaryFormatter(Nothing, New StreamingContext(StreamingContextStates.Clone))
bnFormat.Serialize(memSteam, Me)
memStream.Seek(0, SeekOrigin.Begin)
Return bnFormat.Deserialize(memStream)
End Function
End Class
End Namespace
Notez que j’ai écrit <Serializable()> juste devant le nom de ma classe, ne me demandez pas pourquoi, sans ça ça ne marche pas, il se produit une erreur “Le type XXX n’est pas marqué comme sérialisable”.
Si vous utilisez un ordinateur Apple, vous aurez sans doute remarqué que la petite icône Wifi en forme de quart de cercle dans la barre du Finder, à côté de l’heure, affiche un peu n’importe quoi.
Parfois elle affiche entièrement en noir, comme si le signal était d’excellente qualité, puis vous vous déconnectez, et là impossible de se reconnecter, signal trop faible.
Heureusement, il éxiste une petite application très sympathique qui permet justement d’afficher l’intensité des réseaux wifi que vous captez, ça s’appelle iStumbler et ça se télécharge ici.
Si vous utilisez le langage PHP, vous êtes sans doute amenés de temps à autre à définir des headers.
Voici donc une petite liste de headers avec parfois la version sans charset (ANSI par défaut), et la version Unicode UTF-8 :
<?php
# Header PHP JSON
header('Content-type: application/json');
header('Content-type: application/json; charset=utf-8');
# Header PHP Texte brut
header('Content-Type: text/plain');
header('Content-Type: text/plain; charset=utf-8');
# Header PHP HTML
header('Content-type: text/html');
header('Content-type: text/html; charset=utf-8');
# Header PHP CSS
header('Content-type: text/css');
# Header PHP Image JPEG
header('Content-Type: image/jpeg');
# Header PHP XML
header('Content-Type: text/xml');
header('Content-Type: text/xml; charset=utf-8');
?>
Enjoy ![]()
Pour promouvoir assurer la propagande autour de son nouveau navigateur IE9, microsoft a créé un site qui note le navigateur que vous utilisez pour y accéder.
Lorsqu’on s’y connecte avec IE9, bien évidement on obtient la note maximale : 4/4, et comme par hasard, quand on utilise un navigateur concurrent comme Mozilla Firefox ou Google Chrome, on a une moins bonne note.
Le plus étonnant, c’est que quand on change le navigateur indiqué dans le User Agent (avec l’extension firefox User Agent Switcher par exemple), pour copier celui d’IE9, alors on obtient la note maximale : 4/4, avec exactement le même navigateur :
Foutage de gueule ou provocation destinée à faire parler de son navigateur, en tout cas on ne manque pas de fair-play à redmond.
T’en as mare de ces abrutis de chats à la con ?

Alors cours vite vers cette page ou tu pourras lancer sauvagement des chats pour les faire rebondir… non mais !
Excel a un comportement assez illogique concernant les cellules de type Texte.
Quand une cellule de format Texte contient un texte de plus de 255 caractères, des dièses (sharp) sont affichés à la place du contenu, obligeant à éditer la cellule pour voir le texte original :
Pour y remédier, la solution est de changer le format de la cellule en Standard.
C’est complétement saugrenu, puisque par définition du texte ça peut être assez long, et la limite de 255 caractère est vite atteinte…