• С чем связанна странная манера сайтов дорогих брендов?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Мой любимый пример - это lib.ru
    Это пример того, как надо плевать на дизайн
    Ответ написан
    8 комментариев
  • Возможно ли создать безошибочную идентификацию устройства?

    GavriKos
    @GavriKos
    В случае клиентского кода гарантировать - невозможно. Можно усложнить задачу настолько, что взлом потеряет смысл ибо будет дороже получаемого профита.
    Ответ написан
    Комментировать
  • Алгоритм переворота строки как реализовать?

    @LemonFox
    stateless mind
    function reverse(str){
      var i = 0;
      var l = str.length;
      var half = Math.ceil(l / 2);
      for(var i = 0; i <= half; i++){
          temp = str[i];
          str[i] = str[l-i];
          str[l-i] = temp;
      }
     return str
    }
    Ответ написан
    1 комментарий
  • Wi-fi ПУШКА Работает? Кто нибудь пробовал сделать по схеме с канала Kreosan на You-tube?

    Jump
    @Jump
    Системный администратор со стажем.
    умный провинциал из Украины придумал антенну
    Это сколько же лет этому провинциалу?
    Учитывая тот факт, что антенна была изобретена в 1926году ему сейчас явно более ста лет, а он все на ютубе постит? Да еще и на Украину из Японии перебрался?
    Мощный чувак.
    Такие антенны в советское время делал каждый уважающий себя школьник для просмотра ТВ.
    На данный момент это пожалуй самая распространенная в быту антенна.
    Ее кстати зачастую называю по фамилии одного из создателей - антенна Яги.

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

    Схема не совсем понятна
    На просторах интернета есть сотни сайтов посвященных изготовлению этой антенны, в библиотеках есть куча книг.
    Ответ написан
    1 комментарий
  • Почему не приходят письма с сайта?

    martin74ua
    @martin74ua
    Linux administrator
    через что отправляются письма?
    что в логах почтового сервера?

    Судя по уровню вопросов - наймите админа.
    Ответ написан
    Комментировать
  • C# Как зашифровать файл?

    lam0x86
    @lam0x86
    Честно говоря, я не совсем понял, в чём состоит проблема. Если файл не слишком большой, то можно прочитать его в память при помощи File.ReadAllText, затем закодировать содержимое и записать в другой файл. Если файл большой, то можно использовать FileStream - логика немного меняется, но тоже ничего сложного.

    Я немного оптимизировал Ваш код для строк:
    class Crypto2
        {
            private readonly int[] _key;
            private readonly int[] _inversedKey;
    
            public Crypto2(string key)
            {
                var indexPairs = key
                    .Select((chr, idx1) => new { chr, idx1 }) // присваиваем каждому символу индекс
                    .OrderBy(arg => arg.chr) // сортируем по символам
                    .Select((arg, idx2) => new { arg.idx1, idx2 }) // и теперь создаём массив из пар "первоначальный индекс" <=> "отсортированный индекс".
                    .ToArray();
    
                // Генерируем прямой ключ: чем "меньше" символ (в алфавитном порядке), тем меньше его индекс в конечном массиве.
                // "а" => 0, ... , "ь" => 5
                // Получаем: "цезарь" => [4, 1, 2, 0, 3, 5]
                _key = indexPairs
                    .OrderBy(arg => arg.idx1)
                    .Select(arg => arg.idx2)
                    .ToArray();
    
                // Обратная операция для декодирования
                _inversedKey = indexPairs
                    .OrderBy(arg => arg.idx2)
                    .Select(arg => arg.idx1)
                    .ToArray();
            }
    
            public string Encrypt(string message)
            {
                return EncryptDecrypt(message, _key);
            }
    
            public string Decrypt(string message)
            {
                return EncryptDecrypt(message, _inversedKey);
            }
    
            private static string EncryptDecrypt(string message, int[] key)
            {
                var keyLength = key.Length;
                var messageLength = message.Length;
                if (messageLength % keyLength > 0)
                {
                    // Дополняем строку пробелами, если необходимо
                    message = message.PadRight(messageLength + keyLength - messageLength % keyLength, ' ');
                }
    
                // Никогда не используйте конкатенацию строк в цикле (типа result += keyValuePairs[editKey[j]][i].ToString();). Это очень медленно.
                // Для этих целей есть специальный класс StringBuilder.
                // Мы заранее знаем длину конечной строки, поэтому инициализируем StringBuilder правильно.
                var sb = new StringBuilder(messageLength) {Length = message.Length};
    
                for (var i = 0; i < message.Length; i++)
                {
                    // Вычисляем конечный индекс для вставки символа. 
                    // Первая часть выражения "i / keyLength * keyLength" - округление i вниз до ближайшего значения, делящегося на keyLength
                    // Вторая часть "key[i % keyLength]" - вычисление новой позиции символа на основе ключа.
                    var idx = i / keyLength * keyLength + key[i % keyLength];
                    sb[idx] = message[i];
                }
    
                return sb.ToString();
            }
        }


    А вот тот же код для файлов:

    class Crypto3
        {
            private readonly int[] _key;
            private readonly int[] _inversedKey;
    
            public Crypto3(string key)
            {
                var indexPairs = key
                    .Select((chr, idx1) => new {chr, idx1})
                    .OrderBy(arg => arg.chr)
                    .Select((arg, idx2) =>
                        new
                        {
                            arg.idx1, idx2
                        })
                    .ToArray();
    
                _key = indexPairs
                    .OrderBy(arg => arg.idx1)
                    .Select(arg => arg.idx2)
                    .ToArray();
    
                _inversedKey = indexPairs
                    .OrderBy(arg => arg.idx2)
                    .Select(arg => arg.idx1)
                    .ToArray();
            }
    
            public void Encrypt(string sourceFile, string destinationFile)
            {
                EncryptDecrypt(sourceFile, destinationFile, _key);
            }
    
            public void Decrypt(string sourceFile, string destinationFile)
            {
                EncryptDecrypt(sourceFile, destinationFile, _inversedKey);
            }
    
            private static void EncryptDecrypt(string sourceFile, string destinationFile, int[] key)
            {
                var keyLength = key.Length;
                var buffer1 = new byte[keyLength];
                var buffer2 = new byte[keyLength];
                using (var source = new FileStream(sourceFile, FileMode.Open))
                using (var destination = new FileStream(destinationFile, FileMode.OpenOrCreate))
                {
                    while (true)
                    {
                        var read = source.Read(buffer1, 0, keyLength);
                        if (read == 0)
                        {
                            return;
                        }
                        else if (read < keyLength)
                        {
                            for (int i = read; i < keyLength; i++)
                            {
                                buffer1[i] = (byte) ' ';
                            }
                        }
    
                        for (var i = 0; i < keyLength; i++)
                        {
                            var idx = i / keyLength * keyLength + key[i % keyLength];
                            buffer2[idx] = buffer1[i];
                        }
    
                        destination.Write(buffer2, 0, keyLength);
                    }
                }
            }
        }
    Ответ написан
    1 комментарий
  • Можно ли в switch перейти заново к началу switch в C#?

    shai_hulud
    @shai_hulud
    Конечно, для этого достаточно обернуть его в цикл. А там уже и до антипаттерна https://en.wikipedia.org/wiki/Loop-switch_sequence недалеко.
    Ответ написан
    Комментировать
  • Зачем нужны методы возвращающие значение поля класса?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Обьявляя приватное поле, вы хотите чтобы оно менялось только кодом этого класса. Т.е. только ваш класс управляет своим состоянием своих параметров.
    Представьте кто-то напишет код где будет напрямую использовать значение age. А оно вдруг поменяется. Потому что у вашего человечка случился День Рождения. Внешний код не получит обновления переменной если не запросит его снова. Когда доступ к значению дается через вызов метода, есть гарантия того, что внешний код будет всегда получать актуальное значение переменной. Предоставляя публичные методы доступа к внутренним параметрам, вы даете внешнему миру интерфейс взаимодействия с вашим классом. И таким образом определяете правила.

    Вот вам простая аналогия:
    Вы не можете получить доступ к данным из ЖЭК, их базы данных для вас закрыты, но по заявке вы получите доступ к той информации, получить которую имеете право. Заявление и справка это интерфейс работы с данными в ЖЭКе для внешних систем, т.е. жильцов.
    Ответ написан
    Комментировать
  • Насколько безопасен Android 6.0.1?

    akaish
    @akaish
    Стек Java\Android
    Пользуйтесь спокойно. Если сторонних приложений нет, а разрешения настроенные, шанс потерять денежные средства с карточки минимальный. Это уже из разряда паранойи. Если всё-равно нервничаете - пользуйтесь самой свежей версией стороннего браузера (к примеру, Mozilla), отключите JS для всех веб сайтов кроме доверенных и поставьте антивирус + файрвол.
    Если желаете - поищите новые прошивки на нужное устройство. Если совсем параноите и новых прошивок больше нет - шейте кастом ром на основе образа из Android SDK
    А так, повторюсь, практического смысла в этом нет. Уязвимости есть всегда. Только обычных людей никто ломать спецом не будет. А даже, если этот конкретный планшет будет взломан, двухфакторная аутентификация не позволит злоумышленнику воспользоваться Вашими средствами.

    Лучше задумайтесь об использовании мобильного телефона (мобильный банк, передача конфиденциальной информации посредством телефонной связи). Алгоритм A5 (используется до сих пор в стандарте GSM) ломается после 8 секунд разговора, а подмена базовой соты делается проще простого. А если Вы перезагрузите телефон из-под подмененной базовой соты, злоумышленник без проблем получит Ваш iccid и imsi и сможет эмулировать вашу симкарту со всеми вытекающими. И Вы этого даже не поймете. Во дворе припаркован фургончик, а телефон даже и не поймет, что подключен к левой базовой станции. А кто-то уже обчищает вашу карточку переводами через смс банк.
    Ответ написан
    Комментировать
  • Как работает прослушка пользователя смартфоном?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Никто не знает. Пока никто даже не смог уличить мобильники в прослушивании.
    Ответ написан
    Комментировать
  • Как работает прослушка пользователя смартфоном?

    fzfx
    @fzfx
    18,5 дм
    совпадение. меньше телефонными номерами надо светить налево и направо.
    Ответ написан
    Комментировать
  • IT-шник на дому, а-ля фрилансер должен регистрироваться как самозанятый гражданин?

    @Drno
    ПО закону вы должны ть оформленны и у них на юр лице как сотрудник или как ИП.
    КОгда введут самозанятых - то или ИП или самозанятый.
    Перестаньте деньги на карту получать,берите наличкой... Вы же в ИТ, должны понимать последствия...

    Вторая часть.
    А какой смысл регистрироваться? Никаких бонусов кроме отбора государством у Вас денег это Вам не принесет... Ни помощи какой либо, ни выдачи кредитов, ничего. ПОэтому смысла я лично не вижу никакого
    Ответ написан
    16 комментариев
  • Как сделать правильный выбор между C# и Java?

    MalkovVladimir73
    @MalkovVladimir73
    Fullstack (node + vue.js)
    Как человек, который 1.5 года учился java, а потом вышел работать с C# - точно могу сказать, разница несущественна. Специалисту всё равно какой инструмент он использует. Хотите наиболее производительное мобильное приложение - используете java, хотите desktop windows, вэб бэкенд, игры - C# (имхо). ML - python. Микроконтроллеры - C (C++). Хотите делать качественное ПО для всего вышеперечисленного, тогда я вам огорчу, серебряной пули нет придется использовать разные инструменты, но с опытом, вы поймёте, что различия весьма преувеличены.
    Ответ написан
    2 комментария
  • Почему sql запрос при строгом сравнении берет включительно?

    SagePtr
    @SagePtr
    Еда - это святое
    Потому что 1.35 - это на самом деле 1.35000002384185791015625.
    Доверять можно только тем флоатам, которые при умножении на какую-нибудь степень двойки дают целое число.
    Ответ написан
    2 комментария
  • Бесплатная Api погоды?

    sim3x
    @sim3x
    Комментировать
  • Как сделать прямую оплату с карты в интернет магазине?

    @boss_lexa
    Ввод карты на сайте рф делают:
    https://cloudpayments.ru/wiki/integration/products...
    docs.mandarinbank.com/api_v2.html#hosted-fields
    https://payture.com/integration
    Есть разные способы как это можно сделать, но это зависит от ваших требований и возможностей которые дают платежные сервисы

    Для соблюдения PCI DSS потребуется заполнение ежегодное заполнение SAQ листа и ежеквартальное ASV сканирование на уязвимости.
    Бесплатные сервисы по ASV и SAQ
    https://www.hackerguardian.com/hackerguardian/buy/...
    https://www.hackerguardian.com/pci-saq.html

    UPD. Нашел картинку по выбору листа SAQ
    5bd74b3117195550167483.png
    iframe (как и редирект) меньше всего требований - лист SAQ A (этот лист для редиректа в РФ никто и не спрашиваются), для него вобщем-то ASV-сканирование не нужно, данные ведь у вас не будут вводится. Общался со специалистами по интернет-экварийнгу из альфабанка - они сказали можно сверстать форму по их требованиям и залить ее на сервер банка, а оттуда через iframe подрубать. В результате все довольны
    Ответ написан
    Комментировать