Задать вопрос
  • Как сделать Android приложение на Python + HTML5?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Используйте библиотеку
    <html>
      <head>
        <script src="/brython.js"></script>
      </head>
      <body onload="brython()">
        <script type="text/python" src="test.py"></script>
      </body>
    </html>

    Качнуть
    Ответ написан
  • В cmd не отображается символ ASCII 02. Вместо него показывает знак вопроса. Как исправить?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Поменяйте кодовую страницу на нужную.

    chcp - выводит текущий кодовой страницы.
    chcp 65001 - поменять на UTF-8.

    А вообще что-то не сходится. Сомневаюсь, что символ ASCII не отображается. Любая русская буква - это НЕ ASCII-символ по определению. Так что расскажите больше, что именно за символ, и как и откуда вы его отображаете, желательно с примером.
    Ответ написан
  • Как анимировать примитивы на веб странице?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Смотри в сторону JavaScript. По сути ты хочешь сделать игру, так что нужна продвинутая логика. Тем более, JS - нативный язык для веба.

    Графически реализовать есть варианты. Самое простое - canvas.

    В качестве идеи могу подкинуть визуализацию ячеек памяти в виде квадратов. Остаётся задизайнить их расположение, название и прочее оформление. Скажем, массив - это склеенные ячейки (вертикально или горизонтально). Анимацией в этом случае будет представлено копирование из одной ячейки в другую (оператор присваивания). А оператор сравнения можно изобразить, как линию между ячейками, которая появляется в момент сравнения, плюс к ней какой-то мультик. Можно даже персонажа, который чешет репу, и виден ход его мыслей.
    Ответ написан
    1 комментарий
  • Как сделать интернет на Apple Watch в России, Беларуси, Украине, Европе?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Подождать, пока не произойдёт одно из двух:
    а) Легализуют eSIM
    б) Выпустят модель специально для стран СНГ с обычной nano

    А пока просто наблюдать со стороны, как развивается технология, и какие изменения претерпевает. Это же по сути игрушка, смартфон не заменяет, буст удобства сомнительный (с учетом всех ограничений).
    Ответ написан
    8 комментариев
  • Как использовать if с несколькими значениями?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    local x, y, z = streetIsMyHome()
    if x == 1 and y == 2 and z == 3 then
      print("Working")
    end


    Если не хотите "мусорить" переменными в пространстве текущего файла или текущей области видимости, то:
    Код
    function streetIsMyHome()
      return 1, 2, 3
    end
    
    do
      local x, y, z = streetIsMyHome()
      if x == 1 and y == 2 and z == 3 then
        print("Working")
      end
    end

    Еще один вариант - написать свою собственную функцию сравнения:
    Код
    function isEqualAll(...) --сравнивает первую половину аргументов со второй
      local t = {...}
      local half = math.floor(#t/2 + 0.5);
      for i=1,half do
        if t[i] ~= t[i+half] then
          return false
        end
      end
      return true
    end
    
    function streetIsMyHome()
      return 1, 2, 3
    end
    
    if isEqualAll(1,2,3,streetIsMyHome()) then
      print("Working")
    end

    Но самое правильное и красивое - делать отдельную функцию для каждой конкретной задачи:
    Код
    function streetIsMyHome()
      return 1, 2, 3
    end
    
    function checkStreetIsMyHome(a,b,c)
      local x,y,z = streetIsMyHome()
      return a==x and b==y and c==z
    end
    
    if checkStreetIsMyHome(1,2,3) then
      print("Working")
    end
    Ответ написан
    Комментировать
  • Как работает этот код?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Чтобы понять, что происходит, нужно просто посмотреть. Например, так:
    Пример
    var q = (function(x,foo = () => x) {
    	console.log('a)',x,y,foo()); //2 undefined 2
    	var x;
    	console.log('b)',x,y,foo()); //2 undefined 2
    	var y = x;
    	console.log('c)',x,y,foo()); //2 2 2
    	x =3;
    	console.log('d)',x,y,foo()); //3 2 2
    	return [x,y,foo()];
    })(2)
    console.log(q) // [3,2,2]
    Более подробный пример
    var q = (console.log('init q',typeof x), //init q undefined
    	function(x,foo = (console.log('init foo',x),() => x)) { //init foo 2
    		console.log('a)',x,y,foo()); //2 undefined 2
    		var x;
    		console.log('b)',x,y,foo()); //2 undefined 2
    		var y = x;
    		console.log('c)',x,y,foo()); //2 2 2
    		x =3;
    		console.log('d)',x,y,foo()); //3 2 2
    		return [x,y,foo()];
    	}
    )(2)
    console.log(q) // [3,2,2]

    В общем, там на момент инициализации функции foo видна область видимости анонимной функции. Но этих локальных областей видимости у анонимной функции как бы две на самом деле. Первая содержит параметры функции, а вторая - уже локальные переменные функции. И вот эта var x сидит во второй и перекрывает первую область видимости. То есть foo не видит var x, а видит только тот x, который в параметрах, потому что сама foo тоже сидит в первой области видимости. Надеюсь, доступно.
    Ответ написан
    Комментировать
  • Как связать добавление и удаленные данных с бэка при клике на checkbox?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Данные с бэка должны приходить с некоторыми уникальными id, которые нужно запоминать на клиенте. Если приходят повторно данные с теми же id, то игнорировать их заменять ими существующие данные. Если новые id, то тогда уже добавлять.

    В соответствии с галочкой можно поставить либо массив id, либо определенный тип данных (по логике вещей галка обычно означает категорию в фильтре данных). Соответственно, в этом случае помимо id с бэка должен приходить также тип данных. Так что можно будет легко удалять данные на основе типа галки.
    Ответ написан
    Комментировать
  • Можно ли спарсить Json с не экранированными кавычками?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно попробовать исправить поломанный JSON.
    Примерно так, но это не покрывает 100% случаев из вашего вопроса
    <?php
    $str = '{"name": "my "name"", "value": "123456789"}';
    
    function fixJSON($str) {
        $len = strlen($str);
        $result = '';
        $space = '';
        $mode = 0;
        for($i=0;$i<$len;$i++){
            $c = $str[$i];
            switch ($mode) {
                case 0: //вне строки
                    if ($c == '"') $mode = 1;
                    $result .= $c;
                    break;
                case 1: //внутри строки
                    if ($c == '"') {
                        $mode = 3;
                        $space = $c;
                        break;
                    }
                    if ($c == '\\') $mode = 2;
                    $result .= $c;
                    break;
                case 2: //сразу после слеша (игнорим один любой символ)
                    $mode = 1;
                    $result .= $c;
                    break;
                case 3: //была кавычка внутри строки
                    if ($c == ' ' || $c == '\n' || $c == '\t' || $c == '\r')
                        $space .= $c;
                    elseif ($c == ',' || $c == '}' || $c == ']' || $c == ':') {
                        //вероятно был конец строки (шанс 99%)
                        $mode = 0;
                        $result .= $space.$c;
                    } else {
                        //мы остались внутри строки на 100%. Экранируем
                        $mode = 1;
                        $result .= '\\'.$space;
                        $i--; //уходим назад, т.к. вдруг это снова кавычка
                    }
                    break;
            }
        }
        return $result;
    }
    
    echo(fixJSON($str)); //{"name": "my \"name\"", "value": "123456789"}
    ?>

    Но лучше исправить то место, которое приводит к поломке JSON, чтобы оттуда к вам сразу нормальные строки приходили, а не костыли изобретать.

    P.S.
    Более совершенный и более упоротый вариант
    <?php
    $str = '{"say": ""my name", hi", "value": "123456789"}';
    
    function fixJSON($str) {
        $len = strlen($str);
        $result = '';
        $space = '';
        $mode = 0;
        for($i=0;$i<$len;$i++){
            $c = $str[$i];
            switch ($mode) {
                case 0: //вне строки
                    if ($c == '"') $mode = 1;
                    $result .= $c;
                    break;
                case 1: //внутри строки
                    if ($c == '"') {
                        $mode = 3;
                        $space = $c;
                        break;
                    }
                    if ($c == '\\') $mode = 2;
                    $result .= $c;
                    break;
                case 2: //сразу после слеша (игнорим один любой символ)
                    $mode = 1;
                    $result .= $c;
                    break;
                case 3: //была кавычка внутри строки
                    if ($c == ' ' || $c == '\n' || $c == '\t' || $c == '\r')
                        $space .= $c;
                    elseif ($c == '}' || $c == ']') {
                        //вероятно был конец строки (шанс 99%)
                        $mode = 4;
                        $space .= $c;
                    }
                    elseif ($c == ',' || $c == ':') {
                        //вероятно был конец строки (шанс 90%)
                        $mode = 5;
                        $space .= $c;
                    } else {
                        //мы остались внутри строки на 100%. Экранируем
                        $mode = 1;
                        $result .= '\\'.$space;
                        $i--; //уходим назад, т.к. вдруг это снова кавычка
                    }
                    break;
                case 4: //после спец символа
                    if ($c == ' ' || $c == '\n' || $c == '\t' || $c == '\r')
                        $space .= $c;
                    elseif ($c == ',') {
                        //был конец строки с шансом 99.99%
                        $mode = 0;
                        $result .= $space.$c;
                    } else {
                        //внтури строки на 100%
                        $mode = 1;
                        $result .= '\\'.$space;
                        $i--;
                    }
                    break;
                case 5: //после запятой
                    if ($c == ' ' || $c == '\n' || $c == '\t' || $c == '\r')
                        $space .= $c;
                    elseif (preg_match('/[0-9"-]+/', $c)) {
                        //был конец строки с шансом 99.9%
                        $mode = 0;
                        $result .= $space;
                        $i--;
                    } else {
                        //внтури строки на 100%
                        $mode = 1;
                        $result .= '\\'.$space;
                        $i--;
                    }
                    break;
            }
        }
        if ($mode>2) $result .= $space;
        return $result;
    }
    
    echo(fixJSON($str)); //{"say": "\"my name\", hi", "value": "123456789"}
    ?>
    Но всегда можно в строку засунуть другой JSON и никакой конечный фиксер не справится с такой глубиной.
    Ответ написан
    Комментировать
  • Как обойти CORS со стороны клиента?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    А при чем здесь VLC? Это отдельное приложение. Там может вообще не быть (скорее всего) проверки CORS, потому что это актуально только в браузере.

    Для браузера, соответственно, нужно создать браузерное расширение с правами доступа к нужным сайтам - оно сможет игнорировать CORS, имея такие права. А обычная вкладка не может просто обращаться к другим сайтам по другим адресам.
    Ответ написан
    Комментировать
  • Как реализовать оповещения в браузере?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Чтобы показать оповещения в браузере средствами JavaScript, достаточно загуглить два слова: javascript и notification.
    Попадёте на документацию: https://developer.mozilla.org/en-US/docs/Web/API/n...

    Далее в самом yii нужно разобраться с календарем. Информация должна как-то попадать на страницу, либо во время загрузки страницы, либо через ajax. Это уже полноценная задача.
    Ответ написан
    Комментировать
  • Попытка взлома аккаунта REG.RU - стоить ли бить тревогу?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Помню был игровой сервер, куда злоумышленники внедрили троян и он ловил пароли при смене прямо на сервере. После этого злоумышленники стали бить тревогу на форуме к игре и по сарафанному радио. Все, кто сменил пароли, лишились аккаунтов. Прежде, чем лавочку прикрыли, многие потеряли игровые ценности, а вернули админы потом не всё и не всем.

    Конечно, это не ваш случай. Просто в тему вспомнилось.

    А по теме вопроса ответ: внимательно читайте и не ленитесь думать перед какими-либо действиями. Спешить никогда не нужно, а тем более паниковать или бить тревогу. Аккуратно наведите мышь на ссылку и убедитесь, что адрес там такой же, как у вас на скриншоте. Если ссылка ведёт именно на reg.ru, то я не вижу повода для беспокойства. В крайнем случае можете проверить ip отправителя и путь следования письма (т.к. обратный адрес не показатель). Ну и для 99.99% надежности лучше вообще никогда не переходить по ссылкам из писем, если вы эти письма не инициировали ближайшие 5 минут на официальном сайте, типа "я забыл пароль, пришлите мне новый".
    Ответ написан
    Комментировать
  • Что это за письмо? Не фишинг ли?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Это явно развод.
    А на что именно - не понятно. На то и расчёт.

    Скорее всего, вам предлагается сделать какое-то действие, которое требует подтверждения. У действия этого есть ссылка. Вот и всё. Возможно, это что-то типа 0-day. Например, example.com/givemoney.php?to=oksana.7vasilieva, далее редирект на подтверждение. В общем, это надо смотреть на ссылку и куда она ведёт (с отключённым автоматическим перенаправлением). Если лень, то просто в спам отправьте письмо.
    Ответ написан
    1 комментарий
  • Кто в курсе. Есть ли аналоги Баннербро?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Конечно, есть.
    Это Google AdSense и Яндекс.Директ
    Ответ написан
  • Как скрыть iframe после отправки формы?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    iframe не может контролировать свои размеры.
    Равно как и внешнее окно не может получить доступ к тому, что творится в iframe.

    Поэтому iframe должен каким-то образом передать информацию об авторизации основному окну. Сделать это можно, например, через postMessage. Или любыми другими путями, которые вам покажутся удобными.

    Но если iframe не хочет делиться информацией, то её нельзя узнать. Разве что через браузерное расширение, но это уже придётся прибегать к помощи пользователя, а в этом случае можно и просто сделать кнопку "Скрыть iframe" для пользователя, которую он сможет нажать по желанию.
    Ответ написан
    Комментировать
  • С чем связана ошибка в Promise?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вы не понимаете, как работают промисы и JS. Это самая главная ошибка.

    Попробую чуть-чуть объяснить.
    fn(a,b,c).then(fn(k,m,n))
    Вот так вы пишете. Что здесь происходит.
    fn срабатывает и сразу же возвращает объект типа промис, в котором вы вызываете метод then. Этот метод принимает две функции - для успеха и для фейла. В качестве функции успеха вы указываете выражение fn(k,m,n). Окей, далее JS вычисляет это выражение, то есть буквально выполняет эту функцию и в качестве результата получает новый промис, который используется в качестве callback функции успеха для первого промиса.

    Внимательно перечитайте документацию.
    https://learn.javascript.ru/promise

    Исправлением ошибки будет что-то вроде этого:
    animation(1, 500, log)
        .then(e=>animation(2, 1000, log))
        .then(e=>animation(3, 2000, log))
        .then(e=>animation(4, "500", log));
    Ответ написан
    Комментировать
  • Передать модальное окно по ссылке?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно через #анкор
    JS код анализирует текущий URL и создаёт модальное окно, если его нет.

    А в общем случае, если нужно по ссылке, то лучше не делать модальное окно, имхо.
    Ответ написан
  • Как в массиве с разными ключами вывести данные на страницу?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    $('button').click(function() {
        
        let button = $(this).next();
      
        let arr = {
           'nameOneItem' : 'Name one',
           'nameTwoItem' : 'Name two'
        };
      
        let out = '';   
      
        for (let i in arr) {
           out += '<span>' + arr[i] + '</span>';
        }
      
        button.append(out);
    });
    Ответ написан
    4 комментария
  • Зеркала в других зонах?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    По идее никак не влияет. Но так делать нет особого смысла, если у вас нет огромного трафика и распределенной системы серверов по миру. Разве что вы не хотите, чтобы их не заняли другие.

    Одно из зеркал может быть популярнее, чем другие, по соображениям поисковой системы. Вот и всё.
    Ответ написан
    Комментировать
  • Сканеры не могут найти вирус - может есть альтернативные технологии сканирования?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Сомневаюсь, что это не вирус.

    Обычно у вируса есть цель. И обычно эта цель сопровождается тем, что вирус не даёт себя обнаружить просто так.

    Скорее всего, проблема в каком-то системном софте, системном реестре, железе, правах пользователя (одно из).
    Ответ написан
  • Как добавить знаки к выборке регулярного выражения?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    document.querySelector('#bet').oninput = function(e){
        var s = e.target.value;
        s = s.replace(/([^0-9.,]|^[.,]*|[.,]*$)/g,'').replace(/,/g,'.');
        var parts = s.split('.');
        e.target.value = parts.slice(0,-1).join('') + '.' + parts.slice(-1);
    }
    Ответ написан
    2 комментария