+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
class TaxStorage {
public:
using TaxCode = Code<3>; // Code<int N, typename Storage = uint32_t> тип для маленьких строк
using TaxType = Code<3>;
using TaxId = std::tuple<TaxCode, TaxType>;
using TaxMap = std::map<TaxId, int>
using CityId = int;
using TaxPointMap = std::unordered_map<CityId, TaxMap>;
TaxMap forCityOrOther(const TaxPointMap& map, const CityId cityId) const {
const auto found = map.find(cityId);
return found == map.cend() ? map.at(OTHER_CITY) : *found; // должно быть found->second
}
}
Dev: Ok GCC, tell me what is wrong.
GCC: /home/whatever/project/TaxStorage.h:102: error: incompatible operand types ('const std::unordered_map<int, std::map<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> >, std::less<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> > >, std::allocator<std::pair<const std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> > > > >, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<const int, std::map<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> >, std::less<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> > >, std::allocator<std::pair<const std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> > > > > > > >::mapped_type' (aka 'const std::map<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> >, std::less<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> > >, std::allocator<std::pair<const std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> > > > >') and 'const std::pair<const int, std::map<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> >, std::less<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> > >, std::allocator<std::pair<const std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> > > > > >')
ДОКОЛЕ?!!
Elvenfighter,
24 Августа 2018
−1
- 1
- 2
$query = "SELECT * FROM archivo_mhora WHERE id_aparato=" . $aparatos_row->id;
$query .= " && DATE_FORMAT(fecha, '%Y.%m.%d')='" . date('Y.m.d', $cur_fecha) . "' ORDER BY energy";
Я не знаю, к какой секции следует отнести этот высер:
1) Автор решил учить испанский. Таблицы имеют имена `aparatos`, `abonandos`, etc
2) Само собой, SQL injection
3) Порнография при работе с датой
kai,
23 Августа 2018
−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
#include <stdio.h>
#include <inttypes.h>
int main(void) {
float a = 0;
float b = -9.8 * 0;
uint32_t* pa = (void*)&a;
uint32_t* pb = (void*)&b;
printf("%li %li %i %f %f\n",pa[0] , pb[0], pb[0]>>31, b+0, b);
return 0;
}
Нолик со взведенным знаковым битом. Вот зачем он нужен?
Psionic,
16 Августа 2018
+2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Попытка
Если Найти( ОформлениеСтроки.ДанныеСтроки.Загружен, Истина ) Тогда
// раскраска строки
КонецЕсли;
Исключение
КонецПопытки
На первый взгляд возникает вопрос: WTF???7семь
На десятый взгляд меня посетили сомненья, ведь код а) рабочий, и 2) гениален!
Смотрите сами.
Вместо "Если ОформлениеСтроки.ДанныеСтроки.Загружен Тогда"
гений с большой буквы "Г" делает финт ушами с наподвыподвертом:
Так как функция "Найти" работает со строками и 1С автоматически преобразует, где возможно, типы, булево значение ОформлениеСтроки.ДанныеСтроки.Загружен приводится к строке, равной "Истина" или "Ложь". Второй аргумент также приводится к строке, равной "Истина". Далее функция "Найти" выполняет поиск подстроки (аргумент №2) в строке (аргумент №1) и возвращает позицию найденной подстроки, в результате имеем 1 если ОформлениеСтроки.ДанныеСтроки.Загружен = Истина, или 0 в противном случае.
Получается
Если 1 Тогда....
или
Если 0 Тогда....
где 1 или 0 автоматически приводится 1Ской к типу булево, где Булево(1) = Истина, и Булево(0) = Ложь.
ИГОГО:
Условие выполняется, а гений с большой буквы "Г"... пугает меня, если честно, одним своим существованием о_О
whiledoman,
17 Июля 2018
+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
// 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 было бы еще неплохо.» — рассудил я и принялся за работу.
j123123,
13 Июля 2018
+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
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').
Битриксоиды этим подосрали даже не веб-студиям, они просто нагенерировали себе много дополнительной работы на долгое время вперед.
Желаю им держать эту планку, и никогда не расти.
gitkv,
05 Июля 2018
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
void Foo::singleShot()
{
QTime delay = QTime::currentTime().addMSecs(50);
while(QTime::currentTime() < delay ) {
QCoreApplication::processEvents(QEventLoop::AllEvents, 5;
}
// do something
}
Вот такой бриллиант инженерной мысли, написанный с использованием фреймворка Qt.
Товарисч ещё спрашивал, чем его реализация хуже чем QTimer::singleShot() :D
Titus_PuIIo,
26 Мая 2018
−104
- 1
Сучечки, ну и где же теперь Ваш крым?
Из-за дороговизны и налогов люди едут в эмираты.
Lev_gLandau,
21 Апреля 2018
0
- 1
- 2
var a=new Array();
a['line']=document.getElementById('water_disconnection_search').value;
array-oriented programming
https://www.teplosetspb.ru/water_disconnection
Fike,
12 Апреля 2018