- 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
<script>
if (!window.BX && top.BX)
window.BX = top.BX;
<?CMedialib::AppendLangMessages();?>
window.<?= $arConfig['event']?> = function(bLoadJS)
{
if (window.oBXMedialib && window.oBXMedialib.bOpened)
return false;
<?if(!CMedialib::CanDoOperation('medialib_view_collection', 0)):?>
return alert(ML_MESS.AccessDenied);
<?else:?>
if (!window.BXMediaLib)
{
if (bLoadJS !== false)
{
// Append CSS
BX.loadCSS("/bitrix/js/fileman/medialib/medialib.css");
var arJS = [];
if (!window.jsAjaxUtil)
arJS.push("/bitrix/js/main/ajax.js?v=<?= filemtime($_SERVER["DOCUMENT_ROOT"].'/bitrix/js/main/ajax.js')?>");
if (!window.jsUtils)
arJS.push("/bitrix/js/main/utils.js?v=<?= filemtime($_SERVER["DOCUMENT_ROOT"].'/bitrix/js/main/utils.js')?>");
if (!window.CHttpRequest)
arJS.push("/bitrix/js/main/admin_tools.js?v=<?= filemtime($_SERVER["DOCUMENT_ROOT"].'/bitrix/js/main/admin_tools.js')?>");
arJS.push("/bitrix/js/fileman/medialib/common.js?v=<?= filemtime($_SERVER["DOCUMENT_ROOT"].'/bitrix/js/fileman/medialib/common.js')?>");
arJS.push("/bitrix/js/fileman/medialib/core.js?v=<?= filemtime($_SERVER["DOCUMENT_ROOT"].'/bitrix/js/fileman/medialib/core.js')?>");
BX.loadScript(arJS);
}
return setTimeout(function(){<?=$arConfig['event']?>(false)}, 50);
}
<?CMedialib::ShowJS()?>
<?
$arSet = explode(',' , CUserOptions::GetOption("fileman", "medialib_user_set", '600,450,0'));
$width = $arSet[0] ? intVal($arSet[0]) : 600;
$height = $arSet[1] ? intVal($arSet[1]) : 450;
$coll_id = $arSet[2] ? intVal($arSet[2]) : 0;
?>
window._mlUserSettings = window._mlUserSettings || {width: <?=$width?>, height: <?=$height?>, coll_id: <?=$coll_id?>}
var oConfig =
{
sessid: "<?=bitrix_sessid()?>",
thumbWidth : <?= COption::GetOptionInt('fileman', "ml_thumb_width", 140)?>,
thumbHeight : <?= COption::GetOptionInt('fileman', "ml_thumb_height", 105) ?>,
userSettings : window._mlUserSettings,
resType: "<?= $resultDest?>",
Types : <?= CUtil::PhpToJSObject(CMedialib::GetTypes($arConfig['types']))?>,
arResultDest : <?= CUtil::PhpToJSObject($arConfig['arResultDest'])?>,
rootAccess: {
new_col: '<?= CMedialib::CanDoOperation('medialib_new_collection', 0)?>',
edit: '<?= CMedialib::CanDoOperation('medialib_edit_collection', 0)?>',
del: '<?= CMedialib::CanDoOperation('medialib_del_collection', 0)?>',
new_item: '<?= CMedialib::CanDoOperation('medialib_new_item', 0)?>',
edit_item: '<?= CMedialib::CanDoOperation('medialib_edit_item', 0)?>',
del_item: '<?= CMedialib::CanDoOperation('medialib_del_item', 0)?>',
access: '<?= CMedialib::CanDoOperation('medialib_access', 0)?>'
},
bCanUpload: <?= $USER->CanDoOperation('fileman_upload_files') ? 'true' : 'false'?>,
bCanViewStructure: <?= $USER->CanDoOperation('fileman_view_file_structure') ? 'true' : 'false'?>,
strExt : "<?= CUtil::JSEscape(CMedialib::GetMediaExtentions())?>",
lang : "<?= $arConfig['lang']?>",
description_id : '<?= CUtil::JSEscape($arConfig['description_id'])?>'
};
window.oBXMedialib = new BXMediaLib(oConfig);
oBXMedialib.Open();
<?endif;?>
};
</script>
звучит так, как будто кого-то вырвало
Зато наверное очень весело поддерживать код на JS, который шаблонизируется пыхапой. Представляю, сколько там XSSа, даблискейпа итд
> в баночках на самом деле содержится обычный гипс
Типичный левачок, которому повезло и его не потянули в левацкий суд за объёб потребителя.
Представь себе что php это шаблоны или препроцессор.
Законно ли генерить сишный код препроцессором?
Законно, но вообще-то такой код будет пахнуть
В лоу левеле это еще допустимо (хотя и не желательно), в вебе это вообще плохо
http://phpfaq.ru/na_tanke
Какой багор ))
удобно дебажить потом.
зы: а теперь представь такой JS как будет
[code]
$.get(".foo > .bar").count() > 0 && foo();
[/cpde]
> intVal
> width
Почему не intWidth?
Кстати, венгерка не нужна. Если ты не можешь из названия переменной угадать её тип -- значит всё плохо. Другое дело -- венгерка семантическая, какой её видел Спольски:
но то такое
Вот возьмем C#. Width у нас чем будет? Интом или доублём?
Тип Width зависит от контекста. в 99% случаев ты читаешь код в IDE или веб-туле для ревью, которая понимает типы. Ты наводишь мыш, и читаешь тип.
Замусоривать код "bIsAuthorizedToContact" и "strLastName" смысла нету, если конечно у вас нe 1994-й код на дворе, и IDE не умеет в типы:)
https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types?redirectedfrom=MSDN
ну-ка, куда указывает
PLONGLONG
а куда
PLONG64
?
В общем кажется что LONGLONG не нужен во современно мире, если конечно вдруг ты не хочешь иметь разные длины типов
И зачем __int64 если есть int64_t? Тоже легаси?
Как всё сложно
Походу тут намек на старину - целое в формате вещественного.
Всё равно какой-то костыль, конечно
The LARGE_INTEGER structure is actually a union. If your compiler has built-in support for 64-bit integers, use the QuadPart member to store the 64-bit integer. Otherwise, use the LowPart and HighPart members to store the 64-bit integer.
Никакого предостережения такого не увидел.
It is not recommended that you add and subtract values from the FILETIME structure to obtain relative times. Instead, you should copy the low- and high-order parts of the file time to a ULARGE_INTEGER structure, perform 64-bit arithmetic on the QuadPart member, and copy the LowPart and HighPart members into the FILETIME structure.
В статье про эти alignment faults: On x64 and ARM64 systems, any alignment faults are handled by a combination of hardware and software. For best performance, all access to memory should be properly aligned. In addition, unaligned interlocked variable access should be avoided on ARM64, as these operations are not atomic-safe.
Но, alignment faults, это то, чего надо избегать на ARM, и то, можно забить - ведь операционная система сама обработает эту хню, ценой некоторого времени. Вот что на x64 это может сделать. Чуть-чуть подзамедлить программу?
А насчет пирфоманса интересно было бы погонять бенчи, может действительно дешевле скопировать по частям, посчитать и скопировать обратно.
Апчхии!
Да, и я в себе уже убил этот пацкаль, от которого только хочется рыгать.
Я помню что была проблема: они попадали на границу пикселей, и всё блюрилось.
Ламповый телевизор?:P)
Хотя существование идеальных беспиксельных устройств противоречит физике, ведь длина волны света конечна, и имеет определенное значение (для определенного цвета).
Идеальное беспиксельное — это векторный дисплей. Недавно обсуждали.