Задать вопрос
  • Что нужно знать для работы c API?

    Jump
    @Jump
    Системный администратор со стажем.
    Что нужно знать для работы c API?
    API
    Ответ написан
    Комментировать
  • Что значит такое ограничение в заголовке класса?

    Nipheris
    @Nipheris Куратор тега C#
    Чтобы в этом ограничении был смысл, класс Game должен быть дженериком с параметром типа TFamilyType.

    Ограничение говорит, что тот тип, который вы подставите вместо TFamilyType при использовании класса Game, должен реализовывать интерфейс IFamily и иметь конструктор без параметров.
    Ответ написан
    1 комментарий
  • Кто разъяснит строчку из C# кода?

    @lil_Toady
    Методу Enum.Parse нужно знать тип enum'а, чтобы понять список возможных значений. Для значений не входящих в перечисление будет выкинуто исключение ArgumentException.

    В перечисление DayOfWeek соответственно входят входят Sunday, Monday, Tuesday, Wednesday, Thursday, Friday и Saturday, если введенная вами строка в консоль не будет соответствовать одному из этих значений, то получите исключение.

    В последних версиях стандарта это же самое можно достичь более простым способом, передавая нужный тип как generic аргумент, и не приходится делать приведение типа:
    favDay = Enum.Parse<DayOfWeek>(Console.ReadLine());

    Думаю такая запись и проще для понимания при чтении кода :)
    Ответ написан
  • Тип данных аналогичный таблице в C#?

    @lil_Toady
    Все верно, вам подойдет struct или class, чтобы описать одну запись (строку), разница между ними будет что первое - value type, не может быть null. И далее любая коллекция, даже простой массив.

    Предположим что вы описали сущность так:
    class Item
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public DateTime Time { get; set; }
    }


    для простоты используем List - простейший динамический список, можно добавлять, удалять и т.п.:
    var timeTable = new List<Item>
    {
      new Item { Id = 1, Title = "Иван Сергеевич", Time = DateTime.Parse("20.05.2019 18:45") },
      new Item { Id = 2, Title = "Петр Николаевич", Time = DateTime.Parse("20.05.2019 16:45") },
    };


    И теперь через Linq (using System.Linq;) можно работать с этими данным, работает на любой коллекции или массиве, внедряющих интерфейс IEnumerable, и предоставляет различные методы типа Where, Min, Max, OrderBy и т.п.
    var ordered = timeTable.OrderBy(item => item.Time); // Получили IEnumerable<Item>  отсортированный по Time


    P.S. Такая запись, более похожая на SQL тоже возможна, но думаю подход с методами будет все же более удобным
    var ordered = from item in timeTable orderby item.Time ascending select item;
    Ответ написан
    2 комментария
  • Перспективы ue4 и unity?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    Будущее туманно. А о настоящем - открываем hh.ru и ищем.
    Вопрос поднимался много раз.
    Ответ написан
    Комментировать
  • Почему у меня не преобразуются градусы в радианы?

    dasha_programmist
    @dasha_programmist
    ex Software Engineer at Reddit TS/React/GraphQL/Go
    1 градус = Пи/180 радиан
    соответственно функция получения радиан из градусов будет
    toRad = (val) => val * PI/180;
    Ответ написан
    Комментировать
  • Как узнать страну по ip?

    Stalker_RED
    @Stalker_RED
    Скачать себе базу типа такой: https://dev.maxmind.com/geoip/geoip2/geolite2/ (их есть разные)

    или возможно есть какие то закономерности в формировании ip для каждой страны?
    хахаха.
    Это за 2007 https://www.caida.org/research/id-consumption/whoi...
    С тех пор многие крупные сегменты распродали по частям, и каша стала намного более запутанной.
    И да, адреса выдают организациям, а не странам. Будь в каждой стране по одному провайдеру, и не будь ни одного провайдера работающего на несколько стран, ваше желание было бы чуть ближе к реальности :)
    Ответ написан
    Комментировать
  • Наткнулся на подозрительный скрипт в исходниках одного сайта, не вирус ли?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Данные не слились.

    Хотя теоретически это возможно, если использовалась 0day-уязвимость в самом браузере. Но практически шанс этого настолько мал, что не стоит переживать. Очень много слоев защит в браузере, так что даже переполнение буфера мало что даст.

    Это просто обфусцированный код. А значит, автор просто не хочет, чтобы вы знали, что он делает, но это не обязательно вирус. Что именно он делает см. ниже. Но вообще очень много где встречается обфускация (или хотя бы минификация), и гораздо больших масштабов, на килобайты. Это норма.

    Если хотите практически полностью исключить атаку со стороны JS, отключайте его по-умолчанию. Например, я использую расширение (для хрома) Quick Javascript Switcher. Все сайты у меня без JS и всё прекрасно работает. На известных сайтах типа яндекса гугла, мейла, всё чем нужно пользоваться - включено. Ну и если внезапно надо включить (очень редко) - одним кликом делается. Хотя тема расширений сама по себе интересна с точки зрения ИБ, но это уже другая история (и всегда можно их скачать и использовать локально, особенно мелкие с кодом в 30 строк).

    P.S.
    Распаковка, этап 1
    var arr=[
    	'||x2F|x20|x33|x42|_0x9a4f|x54|hi|x2E|x3A|x74|x31|x52|x37|x4E|x6F|x68|x50|x48|var|x70|x4B|x59|x63|x6C|x67|function|console|x73|x72|x76|x62|x6B|x6D|x6E', //0
    	'split', //1
    	'length', //2
    	'constructor', //3
    	'debugger', //4
    	'toString', //5
    	'replace', //6
    	'\x5cw+', //7
    	'k\x206=[\x22\x5c5\x5cn\x5c3\x5cf\x5c5\x5cd\x5c3\x5c2\x5c2\x5c3\x5cj\x5c7\x5c7\x5ci\x5ca\x5c2\x5c2\x5cf\x5c5\x5cd\x5cc\x5c4\x5c4\x5ce\x5c9\x5c7\x5cm\x5c3\x5c2\x5c2\x5c3\x5ch\x5cb\x5cb\x5cl\x5ct\x5ca\x5c2\x5c2\x5cv\x5cx\x5c9\x5co\x5cg\x5cy\x5c2\x5cz\x5cw\x5cu\x5cc\x5c4\x5c4\x5ce\x22,\x22\x5cp\x5cg\x5cq\x22];r\x208(){s[6[1]](6[0])}8()'
    ];
    
    (function(arr, b) {
      var d = function(c) {
        while (--c) {
          arr['push'](arr['shift']());
        }
      };
      d(++b);
    }(arr, 0x1f4));
    
    var e = function(f) {
      f = f - 0x0;
      var g = arr[f];
      return g;
    };
    
    eval(function(h, nn1, i, j, k, m) {
      k = function(n) {
        return n[e('0x0')](0x24);
      };
      if (!'' [e('0x1')](/^/, String)) {
        while (i--) {
          m[k(i)] = j[i] || k(i);
        }
        j = [function(o) {
          return m[o];
        }];
        k = function() {
          return e('0x2');
        };
        i = 0x1;
      };
      while (i--) {
        if (j[i]) {
          h = h[e('0x1')](new RegExp('\x5cb' + k(i) + '\x5cb', 'g'), j[i]);
        }
      }
      return h;
    }(e('0x3'), 0x24, 0x24, e('0x4')[e('0x5')]('|'), 0x0, {}));
    
    var p = function() {
      function q(r) {
        if (('' + r / r)[e('0x6')] !== 0x1 || r % 0x14 === 0x0) {
          (function() {} [e('0x7')](e('0x8'))());
        } else {
          (function() {} [e('0x7')]('debugger')());
        }
        q(++r);
      }
      try {
        q(0x0);
      } catch (ee) {}
    };
    p();
    setInterval(function() {
      p();
    }, 0xfa0);
    Распаковка, этап 2
    var arr=[
    	'toString', //0
    	'replace', //1
    	'\x5cw+', //2
    	'k\x206=[\x22\x5c5\x5cn\x5c3\x5cf\x5c5\x5cd\x5c3\x5c2\x5c2\x5c3\x5cj\x5c7\x5c7\x5ci\x5ca\x5c2\x5c2\x5cf\x5c5\x5cd\x5cc\x5c4\x5c4\x5ce\x5c9\x5c7\x5cm\x5c3\x5c2\x5c2\x5c3\x5ch\x5cb\x5cb\x5cl\x5ct\x5ca\x5c2\x5c2\x5cv\x5cx\x5c9\x5co\x5cg\x5cy\x5c2\x5cz\x5cw\x5cu\x5cc\x5c4\x5c4\x5ce\x22,\x22\x5cp\x5cg\x5cq\x22];r\x208(){s[6[1]](6[0])}8()',
    	'||x2F|x20|x33|x42|_0x9a4f|x54|hi|x2E|x3A|x74|x31|x52|x37|x4E|x6F|x68|x50|x48|var|x70|x4B|x59|x63|x6C|x67|function|console|x73|x72|x76|x62|x6B|x6D|x6E', //4
    	'split', //5
    	'length', //6
    	'constructor', //7
    	'debugger', //8
    ];
    
    var e = function(num) { //получить строку с номером num (они перемешаны)
      num = num - 0;
      var g = arr[num];
      return g;
    };
    
    function getCode(h, nn1, i, j, k, m) {
      k = function(n) {
        return n.toString(0x24);
      };
      if (!''.replace(/^/, String)) {
        while (i--) {
          m[k(i)] = j[i] || k(i);
        }
        j = [function(o) {
          return m[o];
        }];
        k = function() {
          return '\x5cw+';
        };
        i = 0x1;
      };
      while (i--) {
        if (j[i]) {
          h = h.replace(new RegExp('\x5cb' + k(i) + '\x5cb', 'g'), j[i]);
        }
      }
      return h;
    }
    var code = getCode(e(3), 36, 36, e(4).split('|'), 0, {});
    eval(code);
    
    var p = function() {
      function q(r) {
        if (('' + r / r).length !== 1 || r % 20 === 0) {
          debugger;
        } else {
          debugger;
        }
        q(++r);
      }
      try {
        q(0);
      } catch (ee) {}
    };
    p();
    setInterval(function() {
      p();
    }, 4000);
    Распаковка, этап 3
    //Суть скрипта
    function hi() {
      console['log']('BY NBR // HTTP://NBR1337.TK // https://vk.com/nbr1337')
    }
    hi();
    
    //плюс защита от дебага (удалена)
    Распаковка, этап 4
    console.log('BY NBR // HTTP://NBR1337.TK // https://vk.com/nbr1337');

    Вывод - это просто подпись автора, чтобы он смог доказать авторство в суде, если его код спиратят.
    Ответ написан
    4 комментария
  • Влияет ли издатель сертификата на позицию в поисковых системах?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    Дома с переломом ноги
    Нет.

    Если конечно мы говорим об одном и том же типе сертификатов. LE выдает только DV сертфиикаты. Если сравнивать его с DV сертификатом от того же Комодо - скорее всего нифига разницы не будет.

    Если сравнивать с OV или EV сертификатом от Комодо - разница может быть будет. Эта вещь очень сложно доказуема, потому что нужна статистика, которую собрать нереально, если ты не гугл. Но и цена EV сертификата - кусается и пребольно.
    Ответ написан
    Комментировать
  • Как сделать чтобы метки маршрута были поверх обычных меток Яндекс Карты?

    deepblack
    @deepblack
    Для задания начальной, конечной и промежуточных точек используется YMaps.WayPoint
    • wayPointStart - опции отображения начальной путевой точки;
    • wayPointFinish - опции отображения конечной путевой точки;

    WayPoint наследуется от Placemark, у которого есть свойство zindex

    Вот его и используйте.
    Ответ написан
    Комментировать
  • Моя игра не может найти DLL на чужих ПК, при том что они есть, и не работает. Что делать?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Соберите релиз, это первое.

    Вместе с игрой нужно устанавливать пакет Visual Studio Redistributable 2017
    Ответ написан
    1 комментарий
  • Мобильные шейдера, ошибки оптимизации?

    GavriKos
    @GavriKos Куратор тега Unity
    if-else для шейдеров - плохо, да.
    Но причины падения могут быть самые разные - надо как минимум смотреть код шейдера. Ну и попрофилировать стоит.
    Ответ написан
    Комментировать
  • Являются ли персональными данными имя и первая буква фамилии?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Нет, поскольку с помощью этих данных невозможно однозначно идентифицировать конкретную личность.
    Ответ написан
    2 комментария
  • Почему не получается скомпилировать GNU assembler?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега GCC
    Седой и строгий
    Потому что когда gcc запускает ld, он передаёт ему существенно больше параметров, включая необходимые библиотеки, а не только объектный модуль программы.
    Ответ написан
    4 комментария
  • Какие видеокурсы существуют по шифрования сполняемых файлов?

    Zoominger
    @Zoominger Куратор тега IT-образование
    System Integrator
    Лол, ответ на ваш вопрос изучают в ВУЗах на направлениях "Информационная безопасность" где-то лет пять и над ним ломают головы тысячи высокооплачиваемых специалистов.
    Ответ написан
    Комментировать
  • Как сделать, чтобы фильтр не применялся к объектам на карте?

    0xD34F
    @0xD34F Куратор тега Яндекс.Карты
    .gray {
      -webkit-filter: grayscale(100%);
      -moz-filter: grayscale(100%);
      -o-filter: grayscale(100%);
      filter: grayscale(100%);
    }

    map.panes.get('ground').getElement().classList.add('gray');

    https://jsfiddle.net/8y0t6kjv/
    Ответ написан
    1 комментарий
  • Общение/переговоры с заказчиком занимают много времени, что делать?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Всё время, которое ты тратишь на проект заказчика, должно быть оплачено заказчиком.
    Все длительные переговоры, естественно, тоже.
    Ответ написан
    3 комментария
  • Можно-ли скачать видео с YouTube используя DevTools?

    Есть такая «секретная» ссылка: www.youtube.com/get_video_info?video_id=XXXXXX
    Вместо XXXXXX подставьте хэш видео, который в ссылке на ролик, типа youtu.be/BWCiWZtrWXU после слеша.

    По этой (первой) ссылке вернутся URL-encoded данные. Распакуйте их и возьмите параметр url_encoded_fmt_stream_map. Его значение опять надо распаковать как URL-параметры. И из результата вытащить параметр url – это ссылка на единый скачивабельный видеофайл.

    Например, в консоли браузера:
    function getUrlParams(search) {
        let hashes = search.slice(search.indexOf('?') + 1).split('&')
        let params = {}
        hashes.map(hash => {
            let [key, val] = hash.split('=')
            params[key] = decodeURIComponent(val)
        })
    
        return params
    }
    var s = '------'; // здесь длиннющая строка из ответа /get_video_info
    var a = getUrlParams(s);
    var b = getUrlParams(a.url_encoded_fmt_stream_map);
    console.log(b.url); // эту ссылку открываем в браузере - это скачиваемый видеофайл


    Очень надеюсь, что вы покопаетесь в этих данных более подробно, разберётесь, как получать прямые ссылки на скачиваемые файлы во всех форматах и размерах, которые предлагает YouTube, и напишете короткий материал на Хабр по результатам, а также опубликуете gist с рабочим кодом для консоли браузера.
    Ответ написан
    3 комментария
  • Почему не отображается балун?

    0xD34F
    @0xD34F Куратор тега Яндекс.Карты
    Потому что настройки балуна относятся к properties, а не к options - читайте документацию.
    Ответ написан
    2 комментария
  • Почему так нельзя сделать?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Assembler
    Седой и строгий
    Потому что в процессорах нет инструкции cmp, у которой и первый и второй операнд - это область памяти. Ну, по крайней мере в процессорах с архитектурой x86.
    Ответ написан
    Комментировать