- 1
- 2
- 3
- 4
- 5
- (void)cellButtonTapped:(UIButton *)sender
{
UITableViewCell* cell = (id) sender.superview.superview.superview;
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−107
- (void)cellButtonTapped:(UIButton *)sender
{
UITableViewCell* cell = (id) sender.superview.superview.superview;
...
}
Жечь в печах таких людей
+8
#include <iostream>
struct Reader_msg;
template<class T>struct TMsg;
struct IMsg
{
virtual ~IMsg(){}
virtual void SendCast(Reader_msg& obj) = 0;
};
struct Some{};
struct Reader_msg
{
template<class T> void ReadMsg(T& msg)
{
//Здесь можно приляпать статик_ассерт
std::cout<<"ERROR UNKNOW TYPE \n";
}
void ReadMsg(int msg) { (void)msg; std::cout<<"TYPE IS INT\n"; }
void ReadMsg(float msg) { (void)msg; std::cout<<"TYPE IS FLOAT\n"; }
void ReadMsg(Some msg) { (void)msg; std::cout<<"TYPE IS SOME\n"; }
template<class T>void TakeMsg(T& msg) { msg.SendCast(*this); }
};
template<class T>struct TMsg:IMsg
{
T data;
void SendCast(Reader_msg& obj){ obj.ReadMsg(data); }
};
int main()
{
Reader_msg reader;
TMsg<int> msg1;
TMsg<float> msg2;
IMsg& msg3 = msg1;
IMsg& msg4 = msg2;
TMsg<Some> msg5;
TMsg<double> msg6;
reader.TakeMsg(msg1);
reader.TakeMsg(msg2);
reader.TakeMsg(msg3);
reader.TakeMsg(msg4);
reader.TakeMsg(msg5);
reader.TakeMsg(msg6);
}
http://liveworkspace.org/code/4FHDTq$6
−103
# save all blocks to %blocks. Replace first block with <block blockname />
sub _parse_block {
my $tag = $_[1];
last unless $_[0]=~s#($tag->[0]block +([^ /]*?) *$tag->[1])((.*?)$tag->[0]/?block$tag->[1])#
my($opentag,$source,$bname,$bcode, $retval) = ($1,$3, $2, $4, '');
if( $bcode =~m|$tag->[0]block +[^ /]*? *$tag->[1]|){
_parse_block($source, $tag);
$retval = $opentag.$source;
}else{
$retval = "$tag->[0]block $bname /$tag->[1]" unless exists $blocks{$bname};
$bcode=~s%$tag->[0](:? |/)*parent(:? |/)*$tag->[1]%$blocks{$bname}%g;
$blocks{$bname} = $bcode;
}
$retval;
#seg;
}
foreach my $tag( @{$self->{tag_symbols}} ){
_parse_block($code,$tag) while(1);
}
#if <blockmode> turned on, delete all data that not in blocks until </blockmode> or end of code
foreach my $tag( @{$self->{tag_symbols}} ){
$code=~s%$tag->[0] *blocks?(?:mode?)? *$tag->[1](.*?)(?:(?:$tag->[0] *\/ *blocks?(?:mode?)? *$tag->[1])|(';#end of code))%
$_ = $1; my $end_of_code = $2;
my $retval;
$retval .= $1 while( m/($tag->[0]block +[^ ]*? *\/.*?$tag->[1])/g );
$retval.$end_of_code;
%esg;
#
}
# replace <block blockname /> with a code block
foreach my $tag( @{$self->{tag_symbols}} ){
while($code=~s|$tag->[0]block +([A-zА-я0-9_-]*?) */.*?$tag->[1]|$blocks{$1}|eg){};
};
Кусок шаблонизатора. Парсинг вложенных тегов регулярками.
+19
Class1* c1 = (Class1*)malloc(sizeof(Class1)*N);
Class2* c2 = (Class2*)malloc(sizeof(Class2)*N);
for (long i = 0; i < N; i++) c1[i] = Class1();
for (long i = 0; i < N; i++) c2[i] = Class2();
Рассказать ему про new[] / delete[]?
+121
Поздравляю, дамы и господа, крупнейшая электронная библиотека русских книг lib.rus.ec попала в России под запрет.
Искомый ip адрес внесен в реестр
Дата основания для внесения в реестр 05.11.2012
Номер основания для внесения в реестр 2/2/16482
Орган, принявший решение о внесении в реестр ФСКН
Дата внесения в реестр 11.11.2012
zapret-gov.ru
Fatal error: Cannot redeclare get_web_page() (previously declared in /home/u749066976/public_html/parser.php:7) in /home/u749066976/public_html/parser.php on line 35
+18
template <class TBitMap, int MMCROffset>
class TControllerMemoryMappedRegister: public TBaseControllerMemoryMappedRegister<MMCROffset>
{
public:
static void set(TBitMap::E Bit) { setBit(Bit); }
static void reset(TBitMap::E Bit) { resetBit(Bit); }
};
+138
private static T GetElementValue<T>(this XmlElement elm, string elementName, T defaultValue = default(T), bool throwIfError = false, bool throwIfMissing = false)
where T : IConvertible
{
string val = GetElementValue(elm, elementName);
if (string.IsNullOrEmpty(val) == false)
{
if (typeof(T) == typeof(string))
{
return (T)(object)val;
}
if (typeof(T) == typeof(bool))
{
return (T)(object)(val == "1");
}
try
{
if (typeof(T) == typeof(DateTime))
{
return (T)(object)DateTime.Parse(val, System.Globalization.CultureInfo.InvariantCulture); ;
}
return (T)Convert.ChangeType(val, typeof(T), CultureInfo.InvariantCulture);
}
catch (Exception exc)
{
if (throwIfError)
throw exc;
}
}
if (throwIfMissing)
throw new ArgumentNullException("The parameter '" + elementName + "' is missing");
return defaultValue;
}
Используем Generics по-фэншую!
+125
#include <beer>
#include <autopilot>
// C праздничком, говнокодеры
+160
if(h&&c-L<0)return y^=8,G--,L;
// Toledo просрал оптимизацию на 2 байта ;)
if(h&&c<L)return y^=8,G--,L;
В общем-то этот пост не про говнокод, а про обещанную попытку привести в понятный вид шахматы,
упомянутые в http://govnokod.ru/11704.
https://github.com/bormand/nanochess
Читаем, играем, обсираемкомментируем...
+70
<?php
$nodata = 'nodata';
$A60 = doubleval(@$HTTP_POST_VARS['A60']);
$B60 = doubleval(@$HTTP_POST_VARS['B60']);
$C60 = doubleval(@$HTTP_POST_VARS['C60']);
$D60 = doubleval(@$HTTP_POST_VARS['D60']);
$F60 = doubleval(@$HTTP_POST_VARS['F60']);
$G60 = doubleval(@$HTTP_POST_VARS['G60']);
$H60 = doubleval(@$HTTP_POST_VARS['H60']);
$I60 = doubleval(@$HTTP_POST_VARS['I60']);
$J60 = doubleval(@$HTTP_POST_VARS['J60']);
$K60 = doubleval(@$HTTP_POST_VARS['K60']);
$L60 = doubleval(@$HTTP_POST_VARS['L60']);
$M60 = doubleval(@$HTTP_POST_VARS['M60']);
echo $A60;
if (($A60 < 0) || ($B60 < 0) || ($C60 < 0) || ($D60 < 0) || ($F60 < 0) || ($G60 < 0) || ($H60 < 0) || ($I60 < 0) || ($J60 < 0) || ($K60 < 0) || ($L60 < 0) || ($M60 < 0)) {
readfile("cerror.html"); exit; }
if (($A60 == 0) && ($B60 == 0) && ($C60 == 0) && ($D60 == 0) && ($F60 == 0) && ($G60 == 0) && ($H60 == 0) && ($I60 == 0) && ($J60 == 0) && ($K60 == 0) && ($L60 == 0) && ($M60 == 0)) {
readfile("cerror.html"); exit;}
$D1 = @($A60);
$A2 = @(405.2);
$B2 = @((0.9 + 0.8) / 2);
$C2 = @(8);
$D2 = @($A60 / 3);
$E2 = @(0.00000012);
$F2 = @(exp(-1.60978 + 0.021845 * ($A2 / exp(3 * $B2)) - 0.000186 * pow($A2 / exp(3 * $B2), 2) + 0.0000011 * pow($A2 / exp(3 * $B2), 3)) * exp($B2 * (0.674 + 0.2 * $B2 + 0.007577 * ($A2 / exp(3 * $B2)) + 0.0084248753 * ($A2 / exp(3 * $B2)) * $B2 + 0.0000224434 * pow($A2 / exp(3 * $B2), 2))) * $E2 * $D2);
$I2 = @(0.37);
$J2 = @(0.24);
$K2 = @(0.22);
$A3 = @(368.7);
$B3 = @((0.9 + 0.8) / 2);
$C3 = @(20);
$D3 = @($A60 / 3);
$E3 = @(0.000000013);
$F3 = @(exp(-1.60978 + 0.021845 * ($A3 / exp(2.5 * $B3)) - 0.000186 * pow($A3 / exp(2.5 * $B3), 2) + 0.0000011 * pow($A3 / exp(2.5 * $B3), 3)) * exp($B3 * (0.674 + 0.2 * $B3 + 0.007577 * ($A3 / exp(2.5 * $B3)) + 0.0084248753 * ($A3 / exp(2.5 * $B3)) * $B3 + 0.0000224434 * pow($A3 / exp(2.5 * $B3), 2))) * $E3 * $D3);
$I3 = @(0.37);
$J3 = @(0.24);
$K3 = @(0.22);
$A4 = @(621.4);
$B4 = @(0.9);
$C4 = @(36);
$D4 = @($A60 / 3);
$E4 = @(0.00000001);
$F4 = @(exp(-1.60978 + 0.021845 * ($A4 / exp(2.5 * $B4)) - 0.000186 * pow($A4 / exp(2.5 * $B4), 2) + 0.0000011 * pow($A4 / exp(2.5 * $B4), 3)) * exp($B4 * (0.674 + 0.2 * $B4 + 0.007577 * ($A4 / exp(2.5 * $B4)) + 0.0084248753 * ($A4 / exp(2.5 * $B4)) * $B4 + 0.0000224434 * pow($A4 / exp(2.5 * $B4), 2))) * $E4 * $D4);
$I4 = @(0.37);
// ..аналогичные вычисления и инициализация для остальных переменных типа "буква-число"
$D54 = @($M60 / 2);
$E54 = @(0.0000007);
$I54 = @(0.192);
$J54 = @(0.027);
$K54 = @(0);
$A55 = @(232.5);
$B55 = @((0.5 + 0.8) / 2);
$C55 = @(0);
$D55 = @($M60 / 2);
$E55 = @(0.00000009);
$I55 = @(0.192);
$J55 = @(0.027);
$D56 = @($D53 + $D46 + $D47 + $D48 + $D40 + $D35 + $D30 + $D26 + $D22 + $D18 + $D13 + $D9 + $D5 + $D1);
// поехали по новой считать какие-то средние значения...
$A1 = @(($A2 + $A3 + $A4) / 3);
$B1 = @(($B2 + $B3 + $B4) / 3);
$C1 = @(($C2 + $C3 + $C4) / 3);
$E1 = @(($E2 + $E3 + $E4));
$F1 = @(($F2 + $F3 + $F4));
$I1 = @(($I2 + $I3 + $I4) / 3);
$J1 = @(($J2 + $J3 + $J4) / 3);
$K1 = @(($K2 + $K3 + $K4) / 3);
$H2 = @($F2 * ($I2 + $K2));
$M2 = @(1 - exp(-$H2 * 8766.00));
$H3 = @($F3 * ($I3 + $K3));
$M3 = @(1 - exp(-$H3 * 8766.00));
$H4 = @($F4 * ($I4 + $K4));
$M4 = @(1 - exp(-$H4 * 8766.00));
// ещё немного кода...
$J53 = @(($J54 + $J55) / 2);
$K53 = @(($K54 + $K55) / 2);
$F54 = @(exp(-3.94361687 + 0.02181877 * ($A55 / exp(5 * $B55)) + 0.00000171 * pow($A55 / exp(5 * $B55), 2)) * exp($B54 * (3.464157793 + 0.0000789055 * ($A55 / exp(5 * $B55)))) * $E54 * $D54);
$H54 = @($F54 * ($I54 + $K54));
$M54 = @(1 - exp(-$H54 * 8766.00));
$F55 = @(exp(-3.94361687 + 0.02181877 * ($A56 / exp(5 * $B56)) + 0.00000171 * pow($A56 / exp(5 * $B56), 2)) * exp($B55 * (3.464157793 + 0.0000789055 * ($A56 / exp(5 * $B56)))) * $E55 * $D55);
$H55 = @($F55 * ($I55 + $K55));
$M55 = @(1 - exp(-$H55 * 8766.00));
// и ешё чуть-чуть....
$F10 = @(((293 / (273 + $A10 / exp(4.5 * $B10) + 3000 * $B10 / (125 + $A10 / exp(4.5 * $B10)))) * exp((1 / (273 + $A10 / exp(4.5 * $B10) + 3000 * $B10 / (125 + $A10 / exp(4.5 * $B10)))) - (1.00 / 293.00) + 2 * ($B10 - 1))) * $E10 * $D10);
$H10 = @($F10 * ($I10 + $K10));
$M10 = @(1 - exp(-$H10 * 8766.00));
$F11 = @(((0.75 + 0.104 * $B11 * exp(0.877 * pow($B11, 3))) * (273 + ($A11 / exp(4.6 * $B11))) / 293) * exp((390 + 190 * $B11) * (($A11 / exp(4.6 * $B11)) - 20 + 0.016 * pow($B11 * ($A11 / exp(4.6 * $B11) - 20), 2)) / (293 * (273 + ($A11 / exp(4.6 * $B11))))) * $E11 * $D11);
$H11 = @($F11 * ($I11 + $K11));
$M11 = @(1 - exp(-$H11 * 8766.00));
$F12 = @((pow($B12, 2) + 0.01) * exp((4500 + 400 * $B12 + 1400 * pow($B12, 3)) * ((1.00 / 293.00) - (1 / (273 + ($A12 / exp(8 * $B12)))))) * $E12 * $D12);
$G12 = @(($H11 - $F11 * $K11) * ($A12 / exp(8 * $B12) / $A12));
$H12 = @($F12 * ($I12 + $K12));
$L12 = @((1 - exp(-$G12 * 8766.00)));
$M12 = @(1 - exp(-$H12 * 8766.00));
// 650+ строк таких вычислений для каждой буквы-переменной
?>
Код получает несколько значений: кол-во моторов, транзисторов, микросхем и прочих элементов, после считает разные коэффициенты пожароопасности и шансы возгорания. Записывает их в таблицу и показывает на странице. Говорят, что это работает верно и уже около 6 человек защитили курсовые по этой теме(пожароопасность электроприборов) с использованием этого кода.