- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
try
{
...
}
#if DEBUG
catch
#else
catch
#endif
{
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
try
{
...
}
#if DEBUG
catch
#else
catch
#endif
{
...
}
+2
Попытка
Если Найти( ОформлениеСтроки.ДанныеСтроки.Загружен, Истина ) Тогда
// раскраска строки
КонецЕсли;
Исключение
КонецПопытки
На первый взгляд возникает вопрос: WTF???7семь
На десятый взгляд меня посетили сомненья, ведь код а) рабочий, и 2) гениален!
Смотрите сами.
Вместо "Если ОформлениеСтроки.ДанныеСтроки.Загружен Тогда"
гений с большой буквы "Г" делает финт ушами с наподвыподвертом:
Так как функция "Найти" работает со строками и 1С автоматически преобразует, где возможно, типы, булево значение ОформлениеСтроки.ДанныеСтроки.Загружен приводится к строке, равной "Истина" или "Ложь". Второй аргумент также приводится к строке, равной "Истина". Далее функция "Найти" выполняет поиск подстроки (аргумент №2) в строке (аргумент №1) и возвращает позицию найденной подстроки, в результате имеем 1 если ОформлениеСтроки.ДанныеСтроки.Загружен = Истина, или 0 в противном случае.
Получается
Если 1 Тогда....
или
Если 0 Тогда....
где 1 или 0 автоматически приводится 1Ской к типу булево, где Булево(1) = Истина, и Булево(0) = Ложь.
ИГОГО:
Условие выполняется, а гений с большой буквы "Г"... пугает меня, если честно, одним своим существованием о_О
+1
// https://habr.com/post/417027/
// Как я стандартную библиотеку C++11 писал или почему boost такой страшный
// https://github.com/oktonion/stdex/blob/1472fd5e2f5e0d10a136518631055c3aad2e1cfd/stdex/include/thread.hpp#L51
template<class R, class T1>
struct _function_traits<R(*)(T1)>
{
typedef R result_type;
typedef T1 arg1_type;
typedef T1 argument_type;
};
template<class R, class T1, class T2>
struct _function_traits<R(*)(T1, T2)>
{
typedef R result_type;
typedef T1 arg1_type;
typedef T2 arg2_type;
};
template<class R, class T1, class T2, class T3>
struct _function_traits<R(*)(T1, T2, T3)>
{
typedef R result_type;
typedef T1 arg1_type;
typedef T2 arg2_type;
typedef T3 arg3_type;
};
template<class R, class T1, class T2, class T3, class T4>
struct _function_traits<R(*)(T1, T2, T3, T4)>
{
typedef R result_type;
typedef T1 arg1_type;
typedef T2 arg2_type;
typedef T3 arg3_type;
typedef T4 arg4_type;
};
template<class R, class T1, class T2, class T3, class T4,
class T5>
struct _function_traits<R(*)(T1, T2, T3, T4, T5)>
{
typedef R result_type;
typedef T1 arg1_type;
typedef T2 arg2_type;
typedef T3 arg3_type;
typedef T4 arg4_type;
typedef T5 arg5_type;
};
template<class R, class T1, class T2, class T3, class T4,
class T5, class T6>
struct _function_traits<R(*)(T1, T2, T3, T4, T5, T6)>
{
typedef R result_type;
typedef T1 arg1_type;
typedef T2 arg2_type;
typedef T3 arg3_type;
typedef T4 arg4_type;
typedef T5 arg5_type;
typedef T6 arg6_type;
};
template<class R, class T1, class T2, class T3, class T4,
class T5, class T6, class T7>
struct _function_traits<R(*)(T1, T2, T3, T4, T5, T6, T7)>
{
typedef R result_type;
typedef T1 arg1_type;
typedef T2 arg2_type;
typedef T3 arg3_type;
typedef T4 arg4_type;
typedef T5 arg5_type;
typedef T6 arg6_type;
typedef T7 arg7_type;
};
...
> На дворе был 2017 год! Уже C++ 17 активно вводился в GCC, clang, Visual Studio, везде был decltype (since C++ 11), constexpr (since C++ 11, но существенно доработан), модули уже почти на подходе, хорошее время было. Я же находился на работе и с некоторым неодобрением смотрел на очередной Internal Compiler Error в своем Borland C++ Builder 6.0, а так же на множество ошибок сборки с очередной версией библиотеки boost. Думаю, теперь вы понимаете, откуда взялась эта тяга к велосипедостроению. У нас использовался Borland C++ Builder 6.0 и Visual Studio 2010 под Windows, g++ версии 4.4.2 или ниже под QNX и под некоторые unix системы. От MacOS мы были избавлены, что несомненно было плюсом. Ни о каких других компиляторах (под C++ 11 в том числе) речи даже быть не могло по соображениям, которые мы оставим за пределами данной статьи.
> «А что там может быть на столько сложного» — закралась мысль в мой измученный попытками завести boost под старый-добрый builder мозг. «Мне всего то нужно type_traits, thread, mutex, возможно chrono, nullptr было бы еще неплохо.» — рассудил я и принялся за работу.
+1
public static function PhpToJSObject($arData, $bWS = false, $bSkipTilda = false, $bExtType = false)
{
static $use_bx_encode = null;
if (!isset($use_bx_encode))
$use_bx_encode = function_exists('bx_js_encode');
if ($use_bx_encode)
return bx_js_encode($arData, $bWS, $bSkipTilda, $bExtType);
switch(gettype($arData))
{
case "string":
if(preg_match("#['\"\\n\\r<\\\\\x80]#", $arData))
return "'".CUtil::JSEscape($arData)."'";
else
return "'".$arData."'";
case "array":
$i = -1;
$j = -1;
foreach($arData as $j => $temp)
{
$i++;
if ($j !== $i)
break;
}
if($j === $i)
{
$res = '[';
$first = true;
foreach($arData as $key => $value)
{
if($first)
$first = false;
else
$res .= ',';
switch(gettype($value))
{
case "string":
if(preg_match("#['\"\\n\\r<\\\\\x80]#", $value))
$res .= "'".CUtil::JSEscape($value)."'";
else
$res .= "'".$value."'";
break;
case "array":
$res .= CUtil::PhpToJSObject($value, $bWS, $bSkipTilda, $bExtType);
break;
case "boolean":
if($value === true)
$res .= 'true';
else
$res .= 'false';
break;
case "integer":
case "double":
if ($bExtType)
$res .= $value;
else
$res .= "'".$value."'";
break;
default:
if(preg_match("#['\"\\n\\r<\\\\\x80]#", $value))
$res .= "'".CUtil::JSEscape($value)."'";
else
$res .= "'".$value."'";
break;
}
}
$res .= ']';
return $res;
}
$sWS = ','.($bWS ? "\n" : '');
$res = ($bWS ? "\n" : '').'{';
$first = true;
foreach($arData as $key => $value)
{
if ($bSkipTilda && substr($key, 0, 1) == '~')
continue;
if($first)
$first = false;
else
$res .= $sWS;
if(preg_match("#['\"\\n\\r<\\\\\x80]#", $key))
$res .= "'".CUtil::JSEscape($key)."':";
else
$res .= "'".$key."':";
switch(gettype($value))
{
case "string":
if(preg_match("#['\"\\n\\r<\\\\\x80]#", $value))
$res .= "'".CUtil::JSEscape($value)."'";
else
$res .= "'".$value."'";
break;
case "array":
$res .= CUtil::PhpToJSObject($value, $bWS, $bSkipTilda, $bExtType);
В ядре битрикса в файле bitrix/modules/main/tools.php на 4613 строке, длинной в 141 строку (жаль здесь ограничение на 100 строк), есть замечательный метод который по сути почти повторяет json_encode().
Почти - это потому, что это говно генерит невалидный json (использует одинарные ковычки), да еще не учитывает типы (true превратится в строку 'true').
Битриксоиды этим подосрали даже не веб-студиям, они просто нагенерировали себе много дополнительной работы на долгое время вперед.
Желаю им держать эту планку, и никогда не расти.
0
void Foo::singleShot()
{
QTime delay = QTime::currentTime().addMSecs(50);
while(QTime::currentTime() < delay ) {
QCoreApplication::processEvents(QEventLoop::AllEvents, 5;
}
// do something
}
Вот такой бриллиант инженерной мысли, написанный с использованием фреймворка Qt.
Товарисч ещё спрашивал, чем его реализация хуже чем QTimer::singleShot() :D
−104
Сучечки, ну и где же теперь Ваш крым?
Из-за дороговизны и налогов люди едут в эмираты.
0
var a=new Array();
a['line']=document.getElementById('water_disconnection_search').value;
array-oriented programming
https://www.teplosetspb.ru/water_disconnection
−1
#include <iostream>
#include <string>
#include <sstream>
#include <string.h>
#include <stdlib.h>
typedef std::ios_base& sibr;
typedef sibr (*StringType)(sibr);
int atoi_hod(const char a[], short int *offset)
{
short int numtype = (a[0]== '0')+((a[1]=='x')||(a[1]=='X'));
StringType st;
*offset = 0;
while(a[*offset]&&a[*offset]!='.') (*offset)=(*offset)+1;
switch (numtype)
{
case 0:
st = std::dec;
break;
case 1:
st = std::oct;
break;
case 2:
st = std::hex;
break;
}
int u;
std::istringstream(a)>>st>>u;
return u;
}
bool isIpv4String(const std::string &str)
{
size_t size = str.length();
bool result = size!=0;
if(result)
{
const char *c_str = str.c_str();
unsigned long int i = 0;
char sym;
do
{
sym = c_str[i++];
result = sym=='.'||(sym>='0'&&sym<='9')||!sym||(sym>='a'&&sym<='f')||(sym>='A'&&sym<='F')||sym=='x'||sym=='X';
}
while (sym&&result);
i = 0;
short int dotsOrTerm = 0, numbers = 0, offset;
while (result&&i<size)
{
int n = atoi_hod(&c_str[i], &offset);
result = n<256;
numbers += result;
i += offset;
result = result&&(c_str[i]=='.'||!c_str[i]);
i+=result;
dotsOrTerm += result;
}
result = (dotsOrTerm == 4)&&(numbers == 4);
}
return result;
}
int main()
{
std::string adress;
std::cin>>adress;
std::cout<<(isIpv4String(adress)?"TRUE":"FALSE")<<std::endl;
return 0;
}
По мотивам ГК #24055, наконец-то руки дошли.
+3
namespace CarsKursova
{
public static class Car
{
public static int x1, x2, x3, x4, x5, x6, x7, x8, x9, x10,
x11, x12, x13, x14, x15, x16, x17, x18, x19, x20,
x21, x22, x23, x24, x25, x26, x27, x28, x29, x30,
x31, x32, x33, x34, x35, x36, x37, x38, x39, x40,
x41, x42, x43, x44, x45, x46, x47, x48, x49, x50,
x51, x52, x53, x54, x55, x56, x57, x58, x59, x60,
x61, x62, x63, x64, x65, x66, x67, x68, x69, x70,
x71, x72, x73, x74, x75, x76, x77, x78, x79, x80,
x81, x82, x83, x84,
y1, y2, y3, y4, y5, y6, y7, y8, y9, y10,
y11, y12, y13, y14, y15, y16, y17, y18, y19, y20,
y21, y22, y23, y24, y25, y26, y27, y28, y29, y30,
y31, y32, y33, y34, y35, y36, y37, y38, y39, y40,
y41, y42, y43, y44, y45, y46, y47, y48, y49, y50,
y51, y52, y53, y54, y55, y56, y57, y58, y59, y60,
y61, y62, y63, y64, y65, y66, y67, y68, y69, y70,
y71, y72, y73, y74, y75, y76, y77, y78, y79, y80,
y81, y82, y83, y84;
public static string car = " ";
public static bool game_over = false;
public static bool fix = true;
public static int score = 0;
public static char[,] game_grond = new char[35, 29];
public static char[,] game_gr = new char[35, 29];
....
}
public static void RisovPole()
{
p = Console.CursorTop;
z = Console.CursorLeft;
Console.ForegroundColor = ConsoleColor.Cyan;
WriteAt("|*|", 29, 0);
WriteAt("|*|", 29, 1);
WriteAt("|*|", 29, 2);
WriteAt("|*|", 29, 3);
WriteAt("|*|", 29, 4);
WriteAt("|*|", 29, 5);
WriteAt("|*|", 29, 6);
WriteAt("|*|", 29, 7);
WriteAt("|*|", 29, 8);
WriteAt("|*|", 29, 9);
WriteAt("|*|", 29, 10);
WriteAt("|*|", 29, 11);
WriteAt("|*|", 29, 12);
WriteAt("|*|", 29, 13);
WriteAt("|*|", 29, 14);
WriteAt("|*|", 29, 15);
WriteAt("|*|", 29, 16);
WriteAt("|*|", 29, 17);
WriteAt("|*|", 29, 18);
WriteAt("|*|", 29, 19);
WriteAt("|*|", 29, 20);
WriteAt("|*|", 29, 21);
WriteAt("|*|", 29, 22);
WriteAt("|*|", 29, 23);
WriteAt("|*|", 29, 24);
WriteAt("|*|", 29, 25);
WriteAt("|*|", 29, 26);
WriteAt("|*|", 29, 27);
WriteAt("|*|", 29, 28);
WriteAt("|*|", 29, 29);
WriteAt("|*|", 29, 30);
WriteAt("|*|", 29, 31);
WriteAt("|*|", 29, 32);
WriteAt("|*|", 29, 33);
WriteAt("|*|", 29, 34);
WriteAt("-----------------------------+*|", 0, 35);
WriteAt("*******************************|", 0, 36);
WriteAt("-------------------------------+\n\n\n\n\n\n\n\n\n\n\n", 0, 37);
Console.ResetColor();
}
public static void carplins()
{
y1 = 27; x1 = 13; y22 = 31; x22 = 13;
y2 = 27; x2 = 14; y23 = 31; x23 = 14;
y3 = 27; x3 = 15; y24 = 31; x24 = 15;
y4 = 28; x4 = 13; y25 = 32; x25 = 13;
y5 = 28; x5 = 14; y26 = 32; x26 = 14;
y6 = 28; x6 = 15; y27 = 32; x27 = 15;
y7 = 29; x7 = 10; y28 = 33; x28 = 10;
y8 = 29; x8 = 11; y29 = 33; x29 = 11;
y9 = 29; x9 = 12; y30 = 33; x30 = 12;
y10 = 29; x10 = 13; y31 = 33; x31 = 13;
y11 = 29; x11 = 14; y32 = 33; x32 = 14;
y12 = 29; x12 = 15; y33 = 33; x33 = 15;
y13 = 29; x13 = 16; y34 = 33; x34 = 16;
y14 = 29; x14 = 17; y35 = 33; x35 = 17;
y15 = 29; x15 = 18; y36 = 33; x36 = 18;
y16 = 30; x16 = 10; y37 = 34; x37 = 10;
y17 = 30; x17 = 11; y38 = 34; x38 = 11;
y18 = 30; x18 = 12; y39 = 34; x39 = 12;
y19 = 30; x19 = 16; y40 = 34; x40 = 16;
y20 = 30; x20 = 17; y41 = 34; x41 = 17;
Тетрисные гонки в консоли.
По ссылке - дермомонстр на 400 строк - http://www.cyberforum.ru/csharp-beginners/thread2169797.html
−105
МИД высылает из России дипломатов из Австралии, Албании, Германии, Дании, Ирландии,
Испании, Италии, Канады, Латвии, Литвы, Македонии, Молдавии, Нидерландов, Норвегии,
Польши, Румынии, Украины, Финляндии, Франции, Хорватии, Чехии, Швеции и Эстонии.
Рашке приходит конец.