0
- 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
class MediaWiki {
// Поля, другие методы
private function performRequest() {
global $wgTitle;
$request = $this->context->getRequest();
$requestTitle = $title = $this->context->getTitle();
$output = $this->context->getOutput();
$user = $this->context->getUser();
if ( $request->getVal( 'printable' ) === 'yes' ) {
$output->setPrintable();
}
$this->getHookRunner()->onBeforeInitialize( $title, null, $output, $user, $request, $this );
// Invalid titles. T23776: The interwikis must redirect even if the page name is empty.
if ( $title === null || ( $title->getDBkey() == '' && !$title->isExternal() )
|| $title->isSpecial( 'Badtitle' )
) {
$this->context->setTitle( SpecialPage::getTitleFor( 'Badtitle' ) );
try {
$this->parseTitle();
} catch ( MalformedTitleException $ex ) {
throw new BadTitleError( $ex );
}
throw new BadTitleError();
}
// Check user's permissions to read this page.
// We have to check here to catch special pages etc.
// We will check again in Article::view().
$permissionStatus = PermissionStatus::newEmpty();
if ( !$this->context->getAuthority()->authorizeRead( 'read', $title, $permissionStatus ) ) {
// T34276: allowing the skin to generate output with $wgTitle or
// $this->context->title set to the input title would allow anonymous users to
// determine whether a page exists, potentially leaking private data. In fact, the
// curid and oldid request parameters would allow page titles to be enumerated even
// when they are not guessable. So we reset the title to Special:Badtitle before the
// permissions error is displayed.
// The skin mostly uses $this->context->getTitle() these days, but some extensions
// still use $wgTitle.
$badTitle = SpecialPage::getTitleFor( 'Badtitle' );
$this->context->setTitle( $badTitle );
$wgTitle = $badTitle;
throw new PermissionsError( 'read', $permissionStatus );
}
// Еще какая-то логика для хандлинга редиректов по заголовкам страниц
}
// ...
}
// ...
class MessageCache implements LoggerAwareInterface {
// ...
public function parse( $text, $title = null, $linestart = true,
$interface = false, $language = null
) {
global $wgTitle;
if ( $this->mInParser ) {
return htmlspecialchars( $text );
}
$parser = $this->getParser();
$popts = $this->getParserOptions();
$popts->setInterfaceMessage( $interface );
if ( is_string( $language ) ) {
$language = $this->langFactory->getLanguage( $language );
}
$popts->setTargetLanguage( $language );
if ( !$title || !$title instanceof Title ) {
$logger = LoggerFactory::getInstance( 'GlobalTitleFail' );
$logger->info(
__METHOD__ . ' called with no title set.',
[ 'exception' => new Exception ]
);
$title = $wgTitle;
}
// Sometimes $wgTitle isn't set either...
if ( !$title ) {
# It's not uncommon having a null $wgTitle in scripts. See r80898
# Create a ghost title in such case
$title = Title::makeTitle( NS_SPECIAL, 'Badtitle/title not set in ' . __METHOD__ );
}
$this->mInParser = true;
$res = $parser->parse( $text, $title, $popts, $linestart );
$this->mInParser = false;
return $res;
} // ...
}
Зачем в методах класса вообще использовать глобальные изменяемые состояния, если это нарушает принцип инкапсуляции (для обеспечения чего и была введена абстракция класса в языки)? И сидишь гадаешь, при вызове какого метода у какого объекта у тебя слетела верстка, контент и пр. Это усложняет написание безопасных расширений для системы.
JaneBurt,
03 Мая 2021
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
$query = "
SELECT
`version`, `mods`, `plugins`, `keywords`
WHERE
`version` = {$version}";
foreach (explode(",", $mods) as $mod)
{
$query += "AND `mods` LIKE '{$mod}' OR `mods` LIKE '{$mod},%' OR `mods` LIKE '%,{$mod},%' OR `mods` LIKE '%,{$mod}'";
}
foreach (explode(",", $plugins) as $plugin)
{
$query += "AND `plugins` LIKE '{$plugin}' OR `plugins` LIKE '{$plugin},%' OR `plugins` LIKE '%,{$plugin},%' OR `plugins` LIKE '%,{$plugin}'";
}
Говнокод чтобы прогнать массив с id записей внутри varchar по массиву с id записей из переменной (id,id,id)
Dev1lroot,
27 Марта 2021
0
- 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
#include <stdio.h>
#include <string.h>
double emit_fmadd(double a, double b, double c) __attribute ((noinline));
double emit_fmadd(double a, double b, double c)
{
return a*b+c;
}
int main(void)
{
double a = 10.0000;
double b = 1.00001;
double c = 1.001;
double res = emit_fmadd(a,b,c);
unsigned char arr[sizeof(res)];
memcpy(arr, &res, sizeof(res));
for (int i = 0; i < sizeof(res); i++)
{
printf("%.2x ", arr[i]);
}
printf("\n");
}
/*
gcc -O3 -march=skylake
emit_fmadd:
vfmadd132sd xmm0, xmm2, xmm1
ret
gcc -O3 -march=x86-64
emit_fmadd:
mulsd xmm0, xmm1
addsd xmm0, xmm2
ret
*/
Вот к чему плавучий питух приводит!
https://godbolt.org/z/sP19zP
j123123,
06 Марта 2021
0
- 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
function check_cur_zak(id_zak, obj)
{
obj.getElementsByTagName('img')[0].style.display='none';
obj.getElementsByTagName('img')[1].style.display='block';
var ch_ids_tree_dse = arr2_ids_dse[id_zak].split('|');
var ch_names_tree_dse = arr2_names_dse[id_zak].split('|');
var ch_obozs_tree_dse = arr2_obozs_dse[id_zak].split('|');
var ch_child_tree_dse = arr2_child_dse[id_zak].split('|');
var cur_tree_dse = '';
if(document.getElementById('nav_tekysh_3').name>0)
{
console.log(arr_oprs_c_r_2)
var spl_op_res = arr_oprs_c_r_2[document.getElementById('nav_tekysh_3').name].split('|');
var spl_op_res_arr = [];
for (var spl_f_ar=0; spl_f_ar<spl_op_res.length; spl_f_ar++)
spl_op_res_arr[spl_op_res[spl_f_ar]] = spl_op_res[spl_f_ar];
}
for (var ch_t_f_d=0; ch_t_f_d < (ch_ids_tree_dse.length-1); ch_t_f_d++)
{
var cur_tree_oper_cur_dse = '';
var jv3_arr_full_tbl_1_spl = jv2_arr_full_tbl_1_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_2_spl = jv2_arr_full_tbl_2_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_3_spl = jv2_arr_full_tbl_3_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_4_spl = jv2_arr_full_tbl_4_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_5_spl = jv2_arr_full_tbl_5_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_5_1_spl = jv2_arr_full_tbl_5_1_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_6_spl = jv2_arr_full_tbl_6_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_7_spl = jv2_arr_full_tbl_7_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_8_spl = jv2_arr_full_tbl_8_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_9_spl = jv2_arr_full_tbl_9_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_10_spl = jv2_arr_full_tbl_10_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_11_spl = jv2_arr_full_tbl_11_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_12_spl = jv2_arr_full_tbl_12_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_14_spl = jv2_arr_full_tbl_14_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_15_spl = jv2_arr_full_tbl_15_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_16_spl = jv2_arr_full_tbl_16_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
jv3_arr_full_tbl_17_spl = jv2_arr_full_tbl_17_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
jv3_arr_full_tbl_18_spl = jv2_arr_full_tbl_18_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
jv3_arr_full_tbl_19_spl = jv2_arr_full_tbl_19_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var cur_dse_op_dse = '';
var cur_id_op_dse = '';
var cur_vp_op_dse = '';
for (var ch_t_f_o=0; ch_t_f_o < (jv3_arr_full_tbl_1_spl.length-1); ch_t_f_o++)
{
var clas_tr_col = 'fff';
var clas_tr_br = 'fff';
var clas_tr_pr = 'fff';
var clas_tr_park = 'fff';
var zadel_op = 0;
var stl_b_tr_pr = '';
var js_vp_op = '0<br>0.00';
var js_ksz_op = '0<br>0.00';
// if (jv3_arr_full_tbl_14_spl[ch_t_f_o]>0)
// {
// clas_tr_col='ddffdd';
// clas_tr_br='ddffdd';
// clas_tr_pr='ddffdd';
// clas_tr_park='ddffdd';
// }
if(document.getElementById('nav_tekysh_3').name>0)
{
if (spl_op_res_arr[jv3_arr_full_tbl_16_spl[ch_t_f_o]])
{
clas_tr_pr='99ff99';
stl_b_tr_pr = 'font-size:150%; color:#13BD13;padding-left:5px';
}
var parks_for_cur_res = document.getElementById('park_sel_cur_res').options.length;
for (var p_f_c_r=0; p_f_c_r<parks_for_cur_res; p_f_c_r++)
{
if ((document.getElementById('park_sel_cur_res').options[p_f_c_r].value !== '0')&&(document.getElementById('park_sel_cur_res').options[p_f_c_r].value !== ''))
{
if (jv3_arr_full_tbl_5_1_spl[ch_t_f_o]==document.getElementById('park_sel_cur_res').options[p_f_c_r].value)
clas_tr_park='99ddff';
}
}
}
if (jv3_arr_full_tbl_12_spl[ch_t_f_o]==1)
clas_tr_br='ff9999';
if (jv3_arr_full_tbl_15_spl[ch_t_f_o]==0)
{
if(jv3_arr_full_tbl_3_spl[ch_t_f_o]=='')
jv3_arr_full_tbl_3_spl[ch_t_f_o]='0';
if(jv3_arr_full_tbl_6_spl[ch_t_f_o]=='')
jv3_arr_full_tbl_6_spl[ch_t_f_o]='0.00';
if(jv3_arr_full_tbl_7_spl[ch_t_f_o]=='')
jv3_arr_full_tbl_7_spl[ch_t_f_o]='0';
if(jv3_arr_full_tbl_8_spl[ch_t_f_o]=='')
kib0rg,
18 Февраля 2021
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
// foo.h
namespace Xru {
struct Foo {
Foo();
};
}
// foo1.cpp
#include <foo.h>
using namespace Xru;
Foo::Foo() {}
// foo2.cpp
#include <foo.h>
namespace Xru {
Foo::Foo() {}
}
Вы пишите как 1 или 2?
До меня другой коллега доёбуецца, что нужно как 2.
3_dar,
10 Февраля 2021
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
Всем привет, Я НИХУЯ НЕ ПОНИМАЮ SSL!
Это бесит, но все материалы которые я находил, чтобы ознакомиться, являются
switch уровень развития читателя {
case "пыхомакака":
говноинструкцией без объяснений, с перепутанными терминами, внизу кнопка была ли полезна эта статья
бряк;
case "девопс":
материалом, который непонятно для кого написан, потому что уже предполагает знания, и только что-то напоминает, либо разбирает тонкости
бряк;
case "борманд":
стандартом или книгой, которая настолько последовательно и подробно подаёт материал, что общую картину сходу не сложить, а потому и непонятно по каким полочкам раскладывать узнаваемое
бряк;
}
Подскажите, где покурить нормальный ман, и как эту всю залупу прочамать. Сижу сейчас с добавленным в пакетный менеджер языка кастомным репозиторием (ссылка на гит), который находится за ssl, и моя локальная машина отказывается качать пакет, потому что не доверяет сама себе, чтобы с ним связаться. Что за гавно блять? Какие-то самоподписанные хуификаты, пиздификаты. Говорят, что-то нужно добавить system-wide, чтобы она начала чему-то доверять. Что именно? Куда? crt, key, pem?
Я, короче, пока в общих чертах картину не понимаю, вообще детали не могу воспринимать, хуйня какая-то творится. А делать то, сам не знаю что, лишь бы заработало, дико бесит.
vistefan,
03 Февраля 2021
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
// https://www.linux.org.ru/forum/development/16099510/
// c++ шаблон zip-like итератора?
// В python есть крайне полезные функции zip, enumerate, range. Мне нужно что-то подобное для cpp/cuda (c++17).
// Если c range и enumerate более менее понятно, то как реализовать zip не соображу. Семантически это должно быть variadic template
template<typename t, typename... ts>
class zip : zip<ts...>{
zip(t arg, ts... args);
struct iterator;
begin() -> iterator;
end() -> iterator;
};
// Где итератор возвращает кортеж ссылок на элементы что с контейнерами можно было работать как:
for(auto [x,y,z] : zip(xs,ys,zs))
// Рекурсивное наследование должно быть ограничено тривиальным случаем одного аргумента.
//Но, кажется, я думаю не в правильную сторону, в частности, не соображу как рекурсивно вывести тип возвращаемых итератором кортежей:
using ret_type = tuple<decltype(begin(declval<t>())), decltype(???)>
Блять, как всё сложно. Какие-то рекурсивные выводы типов возвращаемых итераторов кортежей блядь.
Вот если б вместо ущербного триждыблядского типодрочерского шаблоноговна сделали что-то помощнее...
j123123,
11 Января 2021
0
- 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
#include <iostream>
#include <string>
using namespace std;
class Govnokod {
bool _flag_dot;
bool _flag_mant;
int _index_mant;
bool vetka1(int i, const string stroka) {
for (int j = i++; j < stroka.length(); j++) {
switch (stroka[j]) {
case '.':
if (_flag_dot) return false;
_flag_dot = true;
break;
case '0' ... '9': break;
default:
return false;
break; }}
return true;}
bool vetka2_dalshe(const string stroka) {
for (int j = 1; j < stroka.length(); j++) {
switch (stroka[j]) {
case '0' ... '9': break;
default:
return false;
break; }}
return true; }
bool vetka2(const string stroka) {
switch (stroka[0]) {
case '+':
case '-':
if (stroka.length() < 2) return false;
return vetka2_dalshe(stroka);
break;
case '0' ... '9':
return vetka2_dalshe(stroka);
break;
default:
return false;
break; }}
bool mantissa(const string stroka) {
for (int j = 0; j < stroka.length(); j++) {
switch (stroka[j]) {
case 'e':
case 'E':
if ((_flag_mant) or (j == (stroka.length() - 1))) return false;
_flag_mant = true;
_index_mant = j;
break; }}
return true; }
bool Dalshe(int i, const string stroka) {
_flag_dot = false;
_flag_mant = false;
if (not mantissa(stroka)) return false;
else if (_flag_mant) {
string sub1 = stroka.substr(0, _index_mant);
string sub2 = stroka.substr(_index_mant+1);
return (vetka1(i, sub1) and vetka2(sub2)); }
else return vetka1(i, stroka); }
bool proverka(const string stroka) {
switch (stroka[1]) {
case '0' ... '9':
return Dalshe(1, stroka); break;
default: return false; break; }}
bool general_proverka(const string stroka) {
if (stroka.length() == 0) return false;
switch (stroka[0]) {
case '-':
case '+':
if (stroka.length() > 1) return proverka(stroka);
else return false;
break;
case '0' ... '9':
return Dalshe(0, stroka);
break;
default: return false; break; }}
string cut_incorrect_symbol(const string stroka) {
int j, i;
string buf;
for (j = 0, i = 0; j < stroka.length(); j++) {
switch (stroka[j]) {
case '0' ... '9':
case '-':
case '+':
case '.':
case 'e':
case 'E':
buf.push_back(stroka[j]);
break;
default: i++; break; }}
return buf; }
public:
long double opros(char s) {
string argument;
while (true) {
cout << "Введите значение " << s << ": ";
getline(cin, argument);
if (argument.length() == 0) cout << "Вы не ввели значение!" << endl;
else if (not general_proverka(cut_incorrect_symbol(argument))) cout << "Некорректное значение!" << endl;
else return strtold(argument.c_str(), nullptr); }}};
Модифицированная версия говнокода проверки строки на корректность соответствия символов типу long double: изначально вырезаются все левые символы. А вообще этот модуль "govno.h", я написал для основной проги для решения квадратного уравнения.
Westnik_Govnokoda,
25 Декабря 2020
0
- 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
public static long ToNotation(int n, int notation)
{
var result = 0;
var values = new Stack<int>();
if (notation == n)
return n;
if (notation > n)
return 0;
while (n / notation > 0)
{
values.Push(n % notation);
n /= notation;
}
values.Push(n);
int offset = 1;
var Array = values.ToArray();
for (int i = Array.Length - 1; i >= 0; i--)
{
result += Array[i] * offset;
offset *= 10;
}
return result;
}
Пероевод в системы счисления
techlead_seneor_228,
07 Ноября 2020
+1
- 1
- 2
- 3
- 4
SIGRed (CVE-2020-1350) is a wormable, critical vulnerability (CVSS base score of 10.0) in the Windows DNS server
that affects Windows Server versions 2003 to 2019, and can be triggered by a malicious DNS response.
As the service is running in elevated privileges (SYSTEM), if exploited successfully, an attacker is granted Domain Administrator
rights, effectively compromising the entire corporate infrastructure.
https://research.checkpoint.com/2020/resolving-your-way-into-domain-admin-exploiting-a-17-year-old-bug-in-windows-dns-servers/
gost,
15 Июля 2020