-
Лучший говнокод
- В номинации:
-
- За время:
-
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
// Определение метода Q3CanvasText::text()
class Q_COMPAT_EXPORT Q3CanvasText : public Q3CanvasItem {
//...
QString text() const;
//...
};
// Далее уже в "моем" классе строчка:
class CDevice : public CDiagramObject {
// ...
private:
Q3CanvasText * m_pTitle;
//....
public:
const QString & stitle() const { return m_pTitle->text(); } // обратим вниманиена возвращаемый тип
// ...
};
// Еще один класс и отображение тултипа при наведении
void CDiagramView::showToolTip( const QPoint & p, CDevice * d ) {
if( d ) {
QString tmp;
if( d->group() == QString::null || d->group() == "" )
tmp = ( d->stitle().left( d->stitle().indexOf(":") ) ); // вылетало здесь : d->stitle().indexOf(":") segmentation fault
else
tmp = d->group();
//.....
}
}
Нашел магию!
Юзаю Qt 4.8.6 в Linux
Под Виндой новая версия перепиливаемой проги компилится и работает,
под Линухом новая версия вылетает, старая робит.
Соль в том, что метод stitle() по факту возвращает ссылку на копию текста возвращенного Q3CanvasText::text(), которая внезапно удаляется при выходе из метода.
Но почему тот же gcc под виндой скомпилил это без багов?
OlegUP,
03 Февраля 2016
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
[2 Cubi Gold] <a target="_blank" href="index.php?vote=xtreme">xtremetop.com</a>
<?php
if ($_GET["vote"] == "xtreme")
{
$host='localhost';
$database='pw';
$user='root';
$pswd='password';
$dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");
$search=CAuth::getLoggedName();
$search=mysql_real_escape_string($search);
$query="SELECT xtreme FROM `users` where name='".$search."'";
$res = mysql_query($query);
$row = mysql_fetch_row($res);
$dateVote=strtotime($row[0]);
$dateVote2=$row[0];
$nullDate="0000-00-00 00:00:00";
$nullDate = strtotime($nullDate);
$now=date("Y-m-d H:i:s");
$now=mysql_real_escape_string($now);
if($dateVote==$nullDate)
{
$query="UPDATE users SET xtreme='$now' WHERE name='$search'";
$query = mysql_query($query);
//запись в лог и редирект
$log_file="/var/www/html/log.txt";
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR");
fputs($f, "\n325325253\t" .date("d.m.Y H:i:s").' '.$ip."\t".CAuth::getLoggedName().' '."\t1");
fclose($f);
echo "\nYou will be redirected to xtremetop...";
echo "<meta http-equiv='Refresh' content='3;URL=http://google.ru'>";
}
else if ((strtotime($now)-strtotime($dateVote2)) < 21600)
{
echo "You can't vote. Please wait ",21600 - (strtotime($now)-strtotime($dateVote2))," seconds.";
}
else
{
$query="UPDATE users SET xtreme='$now' WHERE name='$search'";
$query = mysql_query($query);
//запись в лог и редирект
$log_file="/var/www/html/log.txt";
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR");
fputs($f, "\n325325253\t" .date("d.m.Y H:i:s").' '.$ip."\t".CAuth::getLoggedName().' '."\t1");
fclose($f);
echo "\nYou will be redirected to xtremetop...";
echo "<meta http-equiv='Refresh' content='3;URL=http://google.ru'>";
}
}
?>
Можете ли вы найти уязвимость?
Ну хоть с этим у него хорошо )))
xpoince,
28 Января 2016
-
+1
- 001
- 002
- 003
- 004
- 005
- 006
- 007
- 008
- 009
- 010
- 011
- 012
- 013
- 014
- 015
- 016
- 017
- 018
- 019
- 020
- 021
- 022
- 023
- 024
- 025
- 026
- 027
- 028
- 029
- 030
- 031
- 032
- 033
- 034
- 035
- 036
- 037
- 038
- 039
- 040
- 041
- 042
- 043
- 044
- 045
- 046
- 047
- 048
- 049
- 050
- 051
- 052
- 053
- 054
- 055
- 056
- 057
- 058
- 059
- 060
- 061
- 062
- 063
- 064
- 065
- 066
- 067
- 068
- 069
- 070
- 071
- 072
- 073
- 074
- 075
- 076
- 077
- 078
- 079
- 080
- 081
- 082
- 083
- 084
- 085
- 086
- 087
- 088
- 089
- 090
- 091
- 092
- 093
- 094
- 095
- 096
- 097
- 098
- 099
- 100
-- Few Scum
import Data.Char
import Text.Read
import Control.Applicative
import Data.Ratio
import Numeric
import Data.List
import Data.Maybe
data Token
=TLetter Char
|TNumf Rational
|TOp Char
|LBrace
|RBrace
deriving (Show, Eq)
data Expr
=Letter Char
|Numf Rational
|Op Char Expr Expr
|Diff Expr
instance Show Expr where
show (Letter c) = [c]
show (Op c el er) = '(' : show el ++ ')' :
c : '(' : show er ++ ")"
show (Numf v) = show $ toDouble v
show (Diff e) = '(' : show e ++ ")'"
toDouble r = fromRational r :: Double
readUnsignedRationalMaybe f = getParseResult $ parseValue f where
parseValue f = {- readSigned -} readFloat f :: [(Rational, String)]
getParseResult [(value, "")] = Just value
getParseResult _ = Nothing
-- Разбиваем строку на элементы, возаращает перевернутый список токенов
tokenize "" = Nothing
tokenize sourceExpressionString = tok [] sourceExpressionString where
tok [] (c:s)
| c == '-' = tok [TOp '-', TNumf 0] s
tok r@(LBrace:_) (c:s)
| c == '-' = tok (TOp '-':TNumf 0:r) s
tok r (c:s)
| c == '(' = tok (LBrace:r) s
| c == ')' = tok (RBrace:r) s
| isLetter c = tok (TLetter c:r) s
| isOperation c = tok (TOp c:r) s
| isNumber c = parseNumf r (c:s)
tok r "" = Just r
tok resultParsedTokens sourceExpressionString = Nothing
isOperation = (`elem` "+-*/")
isNumf c = isNumber c || c == '.'
parseNumf r s = maybeNumber >>= makeResult where
(numberString, tail) = span isNumf s
maybeNumber = readUnsignedRationalMaybe numberString--readMaybe numberString
makeResult number = tok (TNumf number:r) tail
-- Дерево выражений из списка токенов
parse reversedTokens = reversedTokens >>= makeTree where
priorityOps = ["+-","/*"]
subExpr = splitIntoOperationAndSubExpressions
splitIntoOperationAndSubExpressions reversedTokens =
id =<< find isJust (map (findOp reversedTokens [] 0) priorityOps)
findOp (LBrace:_) _ 0 _ = Nothing -- dont checked on left expression, probably can safety removed
findOp (RBrace:l) r b ops = findOp l (RBrace:r) (b+1) ops
findOp (LBrace:l) r b ops = findOp l (LBrace:r) (b-1) ops
findOp (TOp c:l) r 0 ops
| c `elem` ops = Just (c, l, reverse r)
| otherwise = findOp l (TOp c:r) 0 ops
findOp leftSubExpression [] b operationsForFind
| b > 0 = Nothing
findOp (c:l) r b ops = findOp l (c:r) b ops
findOp [] rightSubExpression braceAmount operationsForFind = Nothing
makeTree reversedTokens = mt reversedTokens $ subExpr reversedTokens
mt t@(RBrace:tt) Nothing
| last t == LBrace = mt (init tt) $ subExpr (init tt)
mt [TLetter v] Nothing = Just $ Letter v
mt [TNumf v] Nothing = Just $ Numf v
mt _ Nothing = Nothing
mt _ (Just (o, l, r)) = makeOperationExpression leftExpressionTree rightExpressionTree o where
leftExpressionTree = mt l $ subExpr l
rightExpressionTree = mt r $ subExpr r
makeOperationExpression = moe
moe Nothing _ _ = Nothing
moe _ Nothing _ = Nothing
moe (Just leftExpressionTree) (Just rightExpressionTree) operation = Just $ Op operation leftExpressionTree rightExpressionTree
-- Простейшее упрощение выражений
firstSimplify e = simplifyTreeHeightTimes <$> e where
stepSimplify = fs
fs (Op '*' e (Numf 1)) = e
fs (Op '*' (Numf 1) e) = e
fs (Op '+' e (Numf 0)) = e
fs (Op '+' (Numf 0) e) = e
fs (Op '/' e (Numf 1)) = e
fs (Op '-' e (Numf 0)) = e
fs (Op '*' (Numf 0) _) = Numf 0
fs (Op '*' _ (Numf 0)) = Numf 0
fs (Op '/' (Numf 0) _) = Numf 0
fs (Op '/' (Letter l) (Letter r))
| l == r = Numf 1
fs (Op '-' (Letter l) (Letter r))
Новая Специальная Олимпиада объявляется открытой.
https://ideone.com/Bottp0
Реализовать поиск производной по выражению на любом языке. У кого получится компактнее, правильнее и больше функционала, тот и победил. Заявлять кандидата в победители (код и его автора) можно несколько раз если код улучшил или написал на другом языке. Призов, кроме почета и приятного времяпрепровождения, - не будет
Если кто-то что-нибудь поломает, то я буду очень рад.
Пока упрощение не работает на полную катушку и из функций производных только +-*/
Мой друг обещает ещё версию на крестах подогнать.
laMer007,
26 Января 2016
-
+1
- 1
- 2
- 3
if ($registered_register != "")
if (substr($registered_register, strlen($registered_register)-1, strlen($registered_register)) == ".")
$registered_register = substr($registered_register, 0, strlen($registered_register) - 1);
rtrim()?
Нет, не слышали!
Arris,
20 Января 2016
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
static public function createFromStr($string)
{
$arr = explode('|', trim($string));
if (!empty($arr)) {
$object = new Fingerprint();
for($i = 0, $stop = count($arr); $i < $stop; $i++) {
$value = trim($arr[$i]);
switch($i) {
case 0:
$object->fingerprint = $value;
break;
case 1:
$object->ctrlV = (int)$value;
break;
case 2:
$object->printableKey = (int)$value;
break;
}
}
return $object;
} else {
return null;
}
}
создание объекта класса FingerPrint c помощью статического метода; facepalm
bykovski,
19 Января 2016
-
+1
- 1
- 2
halve :: [a] -> ([a], [a])
halve xs = (\xs mf -> (take (mf xs) xs, drop (mf xs) xs)) xs (\l -> (div (length l) 2))
делим список пополам
ЧЯДНТ?
schwrzwldr_gbln,
17 Января 2016
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
namespace SmalltalkPHP
{
class Model
{
internal static void CreateClass(string className)
{
ClassObject = new Class(className);
}
public static Class ClassObject { get; set; }
public class Message
{
public class Arguments
{
private SortedList arguments = new SortedList();
public void Add(String key, String name)
{
this.arguments.Add(key, name);
}
public String AsPhp()
{
String[] sb = new String[arguments.Count];
int i = 0;
foreach (DictionaryEntry arg in arguments)
{
if ((String)(arg.Value) != "") sb[i] = "$" + arg.Value;
i++;
}
return String.Join(", ", sb);
}
public String MakeFunctionName()
{
String[] sb = new String[arguments.Count];
int i = 0;
foreach (DictionaryEntry arg in arguments)
{
if ((String)(arg.Key) != "") sb[i] = (String)arg.Key;
i++;
}
return String.Join("_", sb);
}
}
public class Generic
{
public virtual string AsPhp()
{
return "nya";
}
}
public class Unary : Generic
{
public Unary(String name, Boolean isStatic = false)
{
this.Name = name;
this.Arguments = new Arguments();
this.IsStatic = isStatic;
}
public string Name { get; set; }
public Arguments Arguments { get; set; }
public Boolean IsStatic { get; set; }
public string PhpHeader
{
get
{
return String.Format("public {0}function {1}()", IsStatic ? "static " : "", Name);
}
}
public override string AsPhp()
{
return PhpHeader;
}
}
public class Keyword : Generic
{
public Keyword(Boolean isStatic = false)
{
this.Arguments = new Arguments();
this.IsStatic = isStatic;
}
public string Name { get { return Arguments.MakeFunctionName(); } }
public Arguments Arguments { get; set; }
public Boolean IsStatic { get; set; }
public string PhpHeader
{
get
{
return String.Format("public {0}function {1}({2})", IsStatic ? "static " : "", Name, Arguments.AsPhp());
}
}
public override string AsPhp()
{
return PhpHeader;
}
}
}
}
}
Писал конвертер Smalltalk -> PHP
Где-то еще валяется Smalltalk -> Erlang
kgm-rj,
14 Января 2016
-
+1
- 1
- 2
- 3
while ((math == (math = Math)).toString() == "true") {
...
}
программист-дотер
mikamika83,
12 Января 2016
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
componentDidMount() {
this.clickListener = (e) => {
var input = document.getElementById('searchInput');
var filtersBar = document.getElementById('filters');
var searchBar = document.getElementById('search');
var clearButton = document.getElementById('suggestInputClearBtn');
var isNav = e.target.className.indexOf('suggestNavBtn') >= 0;
if(input == e.target || searchBar == e.target || filtersBar == e.target || clearButton == e.target || isNav || e.target.className.indexOf('tags-controller-wrapper') !== -1)
return;
var classes = e.target.c†.split(' ');
for(var cls of classes){
if(cls == 'autocompleteItem')
{
return;
}
}
if(this.props.isSuggestInputVisible)
this.props.onCloseAutosuggestion();
};
this.attachClickListener();
}
Я бы только за if без скобок прибил) Обратите внимание на 4 выборки по id которые можно было не делать каждый раз при клике, а если приглядеться то можно понять, что можно было совсем не выбирать ни разу, а если бы пионер знал что всплытие событие можно остановить то этот метод занял бы три строчки и на десерт обратите внимание как он перебирает значение className циклом - это при том что в этом проекте можно писать на es6 Это самый дебильный код который я видел в этом году
inwebart,
29 Декабря 2015
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
// Qt QML >:D
UI_Button
{
id: bt_connect
height: 40
width: 150
radiusBorder: 20
anchors.right: led_connection.left
anchors.rightMargin: 10
anchors.verticalCenter: parent.verticalCenter
textOn: qsTr("Отключиться")
textOff: qsTr("Подключиться")
state: putState(QVipGUI.btConnection)
onClicked:{
if(QVipGUI.btConnection !== GuiDefines.DEF_STATE_DIMMED) {
if(QVipGUI.btConnection === GuiDefines.DEF_STATE_OFF) {
QVipGUI.setLedConnection(GuiDefines.DEF_STATE_OFF)
QVipGUI.method_ActionGui(GuiDefines.ID_ACTION_CONNECT)
QVipGUI.method_ActionGui(GuiDefines.ID_ACTION_GETPORT) // <!>
var i = 0;
while(++i < 1000000){};
QVipGUI.method_ActionGui(GuiDefines.ID_ACTION_GETCONF);
}
else {
QVipGUI.method_ActionGui(GuiDefines.ID_ACTION_DISCONNECT)
}
}
}
}
Qt-среда, язык описания интерфейса - QML >:D
eremite88,
28 Декабря 2015