"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
Mais... Mais c'est tout simplement génial et diabolique !
Je ne suis pas mort, j'ai du travail !
Ah ok. Dand les spécifications c'est marqué qu'il faut que ça marche "si le programme est exécuté par un nain unijambiste dansant à la pleine lune au milieu de douze statuettes enroulées dans du jambon", donc c'est exactement ce qui a été codé (ni plus, ni moins).
Pour tous les autres cas, on facture un nouveau développement...
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
U + 202e ???
Kropernic
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
Mouahah !
Et on peut utiliser ça pour "convertir" une machine cible ? Juste histoire de faire chier son monde (surtout les collègues du helpdesk )
Kropernic
http://www.fileformat.info/info/unic...202e/index.htm
http://www.explainxkcd.com/wiki/index.php/1137:_RTL
Caractère qui provoque un right-to-left override (écriture de droite à gauche plutôt que de gauche à droite)
(tiens, j'avais pas rafraichi mon navigateur, réponse donnée donc :p)
Je ne suis pas mort, j'ai du travail !
Je ne connaissais pas mais c'est absolument diabolique. eroda'j cnoD.
Par exemple, on peut créer un fichier qui semble s'appeler "annexe.doc" mais qui s'appelle en réalité "ann[u+202e]cod.exe" :
http://galogetlatorre.blogspot.fr/20...02e-trick.html
Et puis ça donne des idées de blagues stupides, ça. Par exemple vous glissez dans une spec la phrase suivante:
Puis vous laissez des mains innocentes copier-coller votre texte dans un mail ou un fichier texte...Il faut aller voir les [u+202e] setup
Mettre 1 dans le champ si la date correspond à la semaine dernière?
Genre on aurait pu l'écrire comme ça ?
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part update DCODAT set DATST_SEMAINE_DERNIERE = 1 where trunc(datdt_date,'IW') = trunc(sysdate - 7,'IW')
Pour les messages utiles, mettre un pouce vert fait plaisir à celui qui donne de son temps pour aider. (en tout cas, ça me fait plaisir)
Je déterre un peu le sujet pour vous faire part d'une de mes découvertes récentes que certains connaitront de longue date. UnderHanded C (en) : un concourt de code propre mais qui ne fait pas exactement ce qu'on attend de lui.
Le sujet 2014 était d'actualité :The PiuPiu oversharing site allows users to create PiuPiu accounts and post 140-character messages. The federal government wants PiuPiu to surveil user activity on the site, by archiving any posts that match certain patterns outlined in a national security letter. Subject to the nondisclosure constraints of the letter, PiuPiu may not inform anyone of the surveillance request.The programmer's job is to write code to scan incoming Pius before they are posted, to see if they match any patterns requested in a national security letter. The current system has a function called int preprocess( piu * entry ), to determine if a Piu is suitable for display, or to alter it if necessary; before it returns, it will call a function the programmer will write called void surveil( piu * entry ).Il y a plusieurs code de haut niveau, mais celui du vainqueur est une perle.The underhanded goal is this: write surveil() in such a way that the act of surveillance is subtly leaked to the user or to the outside world. PiuPiu can not reveal the act of surveillance, but your function is technically able to edit the Piu or user structure during scanning. Find a way to alter that data (this alone is a bit of a challenge, since you are not supposed to alter the data, just scan it) in such a way that an informed outsider can tell if someone is being archived. The leakage should be subtle enough that it is not easily noticed.
-- Yankel Scialom
Je vous conseille également de jeter un oeil au code de Wordpress qui est une mine d'or à ce sujet.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143 protected function strip_invalid_text( $data ) { $db_check_string = false; foreach ( $data as &$value ) { $charset = $value['charset']; if ( is_array( $value['length'] ) ) { $length = $value['length']['length']; } else { $length = false; } // There's no charset to work with. if ( false === $charset ) { continue; } // Column isn't a string. if ( ! is_string( $value['value'] ) ) { continue; } $truncate_by_byte_length = 'byte' === $value['length']['type']; $needs_validation = true; if ( // latin1 can store any byte sequence 'latin1' === $charset || // ASCII is always OK. ( ! isset( $value['ascii'] ) && $this->check_ascii( $value['value'] ) ) ) { $truncate_by_byte_length = true; $needs_validation = false; } if ( $truncate_by_byte_length ) { mbstring_binary_safe_encoding(); if ( false !== $length && strlen( $value['value'] ) > $length ) { $value['value'] = substr( $value['value'], 0, $length ); } reset_mbstring_encoding(); if ( ! $needs_validation ) { continue; } } // utf8 can be handled by regex, which is a bunch faster than a DB lookup. if ( ( 'utf8' === $charset || 'utf8mb3' === $charset || 'utf8mb4' === $charset ) && function_exists( 'mb_strlen' ) ) { $regex = '/ ( (?: [\x00-\x7F] # single-byte sequences 0xxxxxxx | [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx | \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2 | [\xE1-\xEC][\x80-\xBF]{2} | \xED[\x80-\x9F][\x80-\xBF] | [\xEE-\xEF][\x80-\xBF]{2}'; if ( 'utf8mb4' === $charset ) { $regex .= ' | \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3 | [\xF1-\xF3][\x80-\xBF]{3} | \xF4[\x80-\x8F][\x80-\xBF]{2} '; } $regex .= '){1,40} # ...one or more times ) | . # anything else /x'; $value['value'] = preg_replace( $regex, '$1', $value['value'] ); if ( false !== $length && mb_strlen( $value['value'], 'UTF-8' ) > $length ) { $value['value'] = mb_substr( $value['value'], 0, $length, 'UTF-8' ); } continue; } // We couldn't use any local conversions, send it to the DB. $value['db'] = $db_check_string = true; } unset( $value ); // Remove by reference. if ( $db_check_string ) { $queries = array(); foreach ( $data as $col => $value ) { if ( ! empty( $value['db'] ) ) { if ( ! isset( $queries[ $value['charset'] ] ) ) { $queries[ $value['charset'] ] = array(); } // We're going to need to truncate by characters or bytes, depending on the length value we have. if ( 'byte' === $value['length']['type'] ) { // Split the CONVERT() calls by charset, so we can make sure the connection is right $queries[ $value['charset'] ][ $col ] = $this->prepare( "CONVERT( LEFT( CONVERT( %s USING binary ), %d ) USING {$value['charset']} )", $value['value'], $value['length']['length'] ); } else { $queries[ $value['charset'] ][ $col ] = $this->prepare( "LEFT( CONVERT( %s USING {$value['charset']} ), %d )", $value['value'], $value['length']['length'] ); } unset( $data[ $col ]['db'] ); } } $connection_charset = $this->charset; foreach ( $queries as $charset => $query ) { if ( ! $query ) { continue; } // Change the charset to match the string(s) we're converting if ( $charset !== $connection_charset ) { $connection_charset = $charset; $this->set_charset( $this->dbh, $charset ); } $this->check_current_query = false; $sql = array(); foreach ( $query as $column => $column_query ) { $sql[] = $column_query . " AS x_$column"; } $row = $this->get_row( "SELECT " . implode( ', ', $sql ), ARRAY_A ); if ( ! $row ) { $this->set_charset( $this->dbh, $connection_charset ); return new WP_Error( 'wpdb_strip_invalid_text_failure' ); } foreach ( array_keys( $query ) as $column ) { $data[ $column ]['value'] = $row["x_$column"]; } } // Don't forget to change the charset back! if ( $connection_charset !== $this->charset ) { $this->set_charset( $this->dbh ); } } return $data; }
Ayant appris la programmation en Python (pendant 6 mois uniquement en fac), je sais ce que c'est l'indentation
Sinon, dans un projet en VB.NET qui a été fait par un collègue, je devais y apporter des corrections, ya un truc que je trouve assez amusant, l'auteur construit ses requêtes sql INSERT en faisant:
sql="INSERT INTO maTable VALUES (" & tRapport(0) & ", " & tRapport(1) & ....
où tRapport est un tableau de chaines.
Avant de faire mes corrections, je passe un temps fou à déboguer et à essayer de voir dans quelle(s) position(s) du tableau je dois intervenir
Le dev a été mis en place en 2012 et depuis, il n'y a jamais eu de retour à ce propos, et spécifiquement pour ce projet, nous devons faire soit des corrections, soit actualiser des calculs à effectuer et toujours dans un temps d'intervention très restreint (10 jours max).
A plusieurs moments donnés, il a été question de migrer ce dev qui a été fait sous visual studio 2010 en windev, mais on ne trouve jamais le temps pour faire cela, tout comme rendre le code plus lisible
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager