Porchoman® is Back!

20 octobre 2008

7 ans d’éxperiences PHP pour un ingenieur ça donne ça…

Classé dans : Non classé — Squirrel @ 19:34
Pour commencer, le fichier débute avec ce genre de choses...
Un joli doctype ^^"
  1. <!DOCTYPE HTML PUBLIC "-//SoftQuad Software//DTD HoTMetaL PRO 6.0::19990601::extensions to HTML 4.0 + WebTV//EN" "webtv.dtd">
Des assignations de variables aléatoires...
  1. if (isset($_REQUEST["aide"])) $aide=$_REQUEST["aide"];
  2. if (isset($_REQUEST["conf"])) $conf=$_REQUEST["conf"];
Aucune séparation affichage/traitement.
Des balises/attributs en upper case systématiquement.
Des balises <script></script> pour "protéger" le code et permettre de pré visualiser le rendu
HTML via l'IDE... mais bien sur, ça reste tel quel même une fois le développement terminé.
les fonctions scriptdebut() et scriptfin() sont aussi là pour ça. Le programme en question
est HotMetal Pro de SoftQuart, plus maintenu à jour depuis quelques années.
  1. <P><FONT FACE="Arial" SIZE="-1"><A
  2. HREF="<? echo $PHP_SELF; ?>?aide=1">Aide</A></FONT></P><SCRIPT>
  3. <?scriptdebut();
  4. /* Aide */
  5. if ($aide==1)
  6. {
  7. scriptfin();
  8. ?>
  9. </SCRIPT>
Pourquoi faire simple quand on peut faire compliqué....
  1. $fp_line = ereg_replace(chr(13),'',$fp_line);
  2. $fp_line = ereg_replace(chr(10),'',$fp_line);
  3. $fp_line = ereg_replace(' ','',$fp_line);
A ceci s'ajoute une indentation totalement farfelue, une conception boiteuse.
Le plus amusant dans tout ceci, est que la personne ayant réalisé ce code, est un ingénieur ayant passé 7 ans à programmer en PHP (entre autre).

15 juillet 2008

HackFr0sT en plein delire

Classé dans : Non classé — Tags :, , — Mahoru @ 14:30

Après une petite conversation avec HackFr0sT (alias Alexis Voisin), il m'a offert ce billet d'avion via Aeroflotte :

23 janvier 2008

fputcsv

Classé dans : Non classé — seb @ 22:24

Php est un langage très complet avec un grand nombre de fonction pour faciliter la vie des développeurs. Mais certains aiment le sport et préfère coder eux même des fonctions de base :

fputs($fichier,$ligne_fic."\r\n ");
$i=0;
foreach($result as $ligne)
{
	$nom = 		$ligne[nom];
	$prenom = 	$ligne[prenom];
	$adresse = 	$ligne[adresse];
	$societe = 	$ligne[societe];
	$tel = 		$ligne[tel_fixe];
	$mobile = 	$ligne[tel_port];
	$fax = 		$ligne[fax];
	$adresse = 	$ligne[adresse];
	$ville = 	$ligne[ville];
	$cp = 		$ligne[code_postal];
	$mail = 	$ligne[mail];
 
	//$ligne_fic = ";;;$prenom $nom;;$mail;;;;;;$mobile;;$tel;;;;;;;;;;;;;;;";
 
	$ligne_fic="\"\",\"$prenom\",\"\",\"$nom\",\"\",\"$societe\",\"\",\"\",\"$adresse\",,
		,\"$ville\",\"\",\"$cp\",\"France\",,,,,,,,,,,,,,,,\"$fax\",\"$tel\",,,,,,,,,\"$mobile\",,,,,,,,
		\"$mail\",\"$mail\",,,,,\"0/0/00\",\"0/0/00\",,,,,\"\",,\"Normale\",,\"\",,,\"p.N.\",,\"\",\"\"
		,,,,,,\"Normale\",\"Faux\",,,,,\"Non spécifié\"";
 
	fputs($fichier,$ligne_fic."\r\n");
	$i++;
}
fclose($fichier);

Les dix commandements de Porchoman…

Classé dans : Non classé — Kris @ 10:34

Vous avez certainement déjà croisé un porchoman dans votre vie, le problème c'est que le porchoman n' a pas conscience qu'il est un porchoman ! Il pense qu'il est le plus génial programmeur de la terre, et se demande d'ailleurs pourquoi diable Google ou Facebook ne l' a pas encore débauché...

Demandez d'ailleurs au prochain porchoman que vous croiserez ce qu'il pense des fameuses « Best practices », alors en empruntant la réthorique habituelle des porchoman, il vous répondra « qu'il est au fait des dernières technologies et qu'il sait parfaitement ce qu'il y a à faire et comment le faire.

Vous vous demandez sûrement d'ou provient l'assurance effrontée de Porchoman, et bien tel une société secrète les porchoman en tous genres se sont imprégnés des dix commandements suivants pour atteindre le stade de l'élévation au rang Porcho. (Lire la suite…)

22 janvier 2008

Heu 2 poulets + 1 dinde = ?

Classé dans : Non classé — Kris @ 16:15

Notre ami porchoman est du type même de l'aventurier, celui la-même qui repousse les limites de la physique, des mathématiques, de l'espace temps intersidéral...

Aujourd'hui notre Indiana Jones des temps modernes relève un défi majeur, il veut pouvoir additionner deux chaines de caractères, alors vous me direz en vous guaussant joyeusement "concaténation"...

Pas si sûr, en tous cas, pas pour lui.

Maybe it's a newbie question, but if I have two strings, let's say s1="4"
and s2="5", how can I get a new string of value "9", that is, add the two
numbers. If I type:
var newStr = s1 + s2
all I get is a concatenation.
How to really add them?

20 janvier 2008

Bonnes pratiques en SSII

Classé dans : Non classé — seb @ 16:20

Sous prétexte de respecter les délais, de réduire les couts et de satisfaire les petits caprices de certains clients, certaines SSII n'hésitent pas à cultiver la méthode du code "vite, moche, débile" en embauchant des gens totalement incompétents.
Ainsi je me suis retrouvé à maintenir des horreurs sans nom.

Exemple : un énorme extranet utilisé par un gros ministère ; le code ci-dessous (asp 3) était dupliqué sur une cinquantaine de fichier

 
&lt;% Sub produit(t)
 
if oRS(t) &gt; 0 then
			response.write "<small>" &amp; t &amp; "</small>
"
		end if
 
	end sub
 
sub tel(t)
	if len(t) &gt; 9 then
		response.write t
	end if
end sub
 
%&gt;
&lt;%set oConn = session("oConn")
 
set oRS = oConn.execute("SELECT * FROM [IntSociétés] WHERE [Numero_de_la_societe] = " &amp; request.queryString  )
 
if not oRS.EOF then
	oRS.MoveFirst
%&gt;
&lt;% end if %&gt;
 
 
 
 
bgcolor="#FFFFFF" style="vertical-align: top"&gt;
 
<strong><span style="color: #ffffff;">
</span>    face="Times New Roman" size="3"&gt;<strong>Nom</strong></strong>
<strong><span style="color: #ffffff;">
</span>    face="Times New Roman" size="3"&gt;<strong>Adresse</strong></strong>
<strong><span style="color: #ffffff;">
</span>    face="Times New Roman" size="3"&gt;<strong>Type
    de produit(s)</strong></strong>
 
    style="margin-left: 2px; margin-right: 2; margin-top: 2; margin-bottom: 2" valign="top"
    align="left"&gt;<span>&lt;% if oRS("Presence_HE") = "O" then
		response.write "<strong> " &amp; oRS("Nom_de_la_societe") &amp; "</strong>
 "
		response.write UCase(oRS("Pays1")) &amp; "
représentée par :
"
		response.write oRS("Nom_de_la_HE")
	else
		response.write "<strong> " &amp; oRS("Nom_de_la_societe") &amp; "</strong>
 "
		response.write UCase(oRS("Pays1"))
	end if%&gt;</span>
 
    style="margin-left: 2px; margin-right: 2; margin-top: 2; margin-bottom: 2" valign="top"
    align="left"&gt;<span style="margin-top: 0px">&lt;%=oRS("Adresse1")%&gt;
            &lt;% 	if not isnull(oRS("CPAdresse1")) then
		response.write oRS("CPAdresse1") &amp; "
"
	end if%&gt;&lt;%=oRS("CP1")%&gt;   &lt;%=oRS("Ville1")%&gt;
            Tél. : &lt;% tel(oRS("Tel1"))%&gt;
            Fax : &lt;% tel(oRS("Fax1"))%&gt;</span>
 
    style="margin-left: 2px; margin-right: 2; margin-top: 2; margin-bottom: 2" valign="top"
    align="center"&gt;
 
<span>
</span>    style="margin-top: 0px"&gt;&lt;% produit("PM") %&gt;
<dd> </dd>
 
bgcolor="#FFFFFF" style="vertical-align: top"&gt;
 
<strong><span style="font-family: Times New Roman; color: #330000; font-size: small;"><strong>N°
        Admission
        à la marque</strong></span></strong>
<strong><span style="font-family: Times New Roman; color: #330000; font-size: small;"><strong>Désignation</strong></span></strong>
<strong><span style="font-family: Times New Roman; color: #330000; font-size: small;"><strong>Matériau
        </strong></span></strong>
 
    &lt;% set oRS2 = oConn.execute("SELECT * FROM [IntPM] WHERE [Numero_de_la_societe] = " &amp; request.queryString )
	if not oRS2.EOF then
		oRS2.MoveFirst
		DO Until oRS2.EOF
%&gt;
 
    style="margin-left: 2px; margin-right: 2; margin-top: 2; margin-bottom: 2" valign="top"
    align="center"&gt;&lt;%=oRS2("PPM_N_Admission_Marque")%&gt; 
 
    style="margin-left: 2px; margin-right: 2; margin-top: 2; margin-bottom: 2" valign="top"
    align="left"&gt; &lt;%=oRS2("PPM_Nom_commercial")%&gt;
 
    style="margin-left: 2px; margin-right: 2; margin-top: 2; margin-bottom: 2" valign="top"
    align="left"&gt;&lt;%=oRS2("PPM_Materiau")%&gt; 
 
    &lt;% 		oRS2.Movenext
	Loop
	End if
%&gt;

17 janvier 2008

Pitié j’ai mal aux yeux…

Classé dans : Non classé — Kris @ 13:59

La communauté porchoman est très ouverte, alors évidemment en tant que développeurs nous avons tendance à recenser le code moche, pourri, boîteux, buggé et j'en passe mais alors aujourd'hui nous ouvrons une parenthèse spéciale, une parenthèse ouvrant une réflexion sur le spirituel, sur l'éveil des sens...

Que de poésie me direz-vous et bien oui, le site que nous allons vous présenter a su tirer toute la quintessance des meilleures pratiques en webdesign, un design clair, sobre, épuré et surtout un effet que beaucoup de sites commerciaux recherchent, le fameux "Eye-catching".

Une étude des couleurs très pertinente et une utilisation parcimonieuse des animations vont vous faire adorer ce site, vous ne tenez plus, vous voulez en savoir plus, allez y !!!

http://www.dokimos.org/ajff/

Séparation du code, vous connaissez ?

Classé dans : Non classé — MagicalTux @ 9:27

La séparation du code, vous en avez certainement déjà entendu parler. Ce concept de séparer au moins l'apparence du code. De nombreux outils permettent de façon relativement simple de séparer du code et de l'apparence. L'exemple le plus connu est très probablement Smarty.

Porchoman est un ennemi de la séparation du code. Pour lui, plus le code est intégré, mieux c'est.

Le principal problème de cette technique relève du fait qu'il deviens alors nécessaire à toute personne travaillant sur le site de connaitre à la fois le HTML et le PHP. Impossible pour un designer de travailler sur l'apparence. Impossible à un développeur pur code de continuer en propre sur le site.

L'extrait de code du jour proviens d'un vieux site trouvé entre deux dossiers. Je pense que son auteur doit se repentir aujourd'hui d'avoir écrit ce style de code.

<img src="img/puce.gif" width="7" height="11"> <a href="profile.php" class="lien2">Profil</a><br>
<img src="img/puce.gif" width="7" height="11"> <a href="<? echo $PHP_SELF."?deconnexion=2"; ?>" class="lien2">D&eacute;connection</a>
<?PHP if ($_SESSION['relations'] > 0) { ?>
<br><img src="img/puce.gif" width="7" height="11"> <a href="datingon.php" class="txt5"><?PHP echo $_SESSION['relations']; ?>
relation(s)</a>
<?PHP } ?>
<?PHP
        $temp3 = new db_tanuki();
        $req = "SELECT `id` FROM `messages` WHERE `nto`='".$_SESSION['name']."' AND `read`='0'";
        $temp3->query($req);
        $_SESSION['nmessages'] = $temp3->nb_lignes();
        $temp3->close();
        if ($_SESSION['nmessages'] > 0) { ?>
<br><img src="img/puce.gif" width="7" height="11"> <a href="datingon.php" class="txt5"><?PHP echo $_SESSION['nmessages']; ?>
message(s)</a>
<?PHP } ?>
</td>
 

16 janvier 2008

Google fédère la communauté porcho !

Classé dans : External code — Kris @ 11:00

Sous ce titre un brin provocateur se cache une terrible vérité, eh oui messieurs les porchos, vous ne vous sentirez plus jamais seul car google est un formidable outil pour recenser, identifier et traquer tous les plus grands bidouilleurs et bricoleurs de code de la terre,  google serait même sur le point de lancer une version spéciale de google code appelée google porchocode, mais ce projet est pour l'intant tenu secret.

L'exemple du jour est un site appelé www.filmbuffs.net (inconnu en France mais who cares comme on dirait chez l'oncle Sam)
Avec cet exemple la notion de non-modularité prend tout son sens, je dirais même plus on peut voir à travers ce code un porchoman averti et expérimenté capable de mélanger du code PHP/ASP/MySQL/HTML/JAVASCRIPT dans la même page ! (attention ils sont de plus en plus nombreux).

La séparation des concepts (SoC pour les connaisseurs) est l'ennemi de Porchoman, sa gangraine, son fardeau..., alors on se lâche et on fait comme on dit chez les rappeurs "A l'ancienne", le tout parfaitement documenté pour notre plus grand bonheur !

Allez je ne vous fais pas plus attendre.

 
&lt;%
 
      dim h
 
h=hour(now())
 
If h &lt; 12 then
 
   response.write("Good morning ")
 
elseif h &lt; 18 then
 
   response.write("Good afternoon")
 
   else
 
   response.write("Good evening")
 
end if
 
      if request.cookies("FBFsubname")&lt;&gt;"" then
 
      Response.Write(" "&amp;request.cookies("FBFsubname"))
 
      end if
 
      Response.Write(".")
 
      %&gt;;
<table align="left" border="0" cellpadding="4" cellspacing="4" height="1" width="100%">
<tbody>
<tr class="normal">
<td colspan="3" class="normal" align="left" valign="top">
<p align="left">&nbsp;
<p class="orangeHeader1" align="center">2006
 
                        Film List
 
This is the list of films that are eligible for voting
 
                      in the <strong>2006 Film Buffs Forecast
 
                        end-of-year poll</strong>
 
                               if ($voted != 1){
 
/* Connecting, selecting database */
 
$link = mysql_connect("216.86.153.117", "cropley_fbf", "poll005")
 
or die("Could not connect : " . mysql_error());
 
//echo "Connected successfully";
 
mysql_select_db("cropley_fbfpoll") or die("Could not select database");
 
/* Performing SQL query */
 
$query = 'SELECT *
 
FROM `2006`';
 
?&gt;</td>
</tr>
</tbody>
</table>
 

Et bien sûr "l'infâmité dans son intégralité" du pur plaisir.

http://209.85.135.104/search?q=cache:TsRGEw3u3gMJ:www.filmbuffs.net/questions.html+worst+SQL+query&hl=en&ct=clnk&cd=2&client=firefox-a

15 janvier 2008

Qui est Porchoman ?

Classé dans : Non classé — MagicalTux @ 20:05

 Porchoman, c'est qui ?

Après de longues années de recherches, notre département R&D est enfin en mesure de vous confirmer son identité. Porchoman® n'est pas une légende, il existe bel et bien.

Qui est-il ? Tout simplement n'importe quel développeur en manque de temps. C'est vous. C'est moi. Porchoman® est partout. Son profil d'action ? Développeur pressé, sous pression, et à qui quelqu'un vient faire une demande en plus de tout ce qu'il fait déjà. La demande est expédiée en beauté, ou plutôt en Porchoman®. (Lire la suite…)

Articles plus récents »