Задать вопрос
  • Как в текущей реальности воспринимают контент статьи?

    @lakegull
    Что значит "типичный юзер"?

    Определите свою целевую аудиторию. Возраст, пол, круг интересов, уровень дохода и т.д.
    Ответ написан
    Комментировать
  • Почему при сложении 1500 чисел, не превышающих 1, printf выдает #INF0?

    Schullz
    @Schullz
    =^.^=
    На некоторой итерации случается следующее:
    rnd = 0;
    t_i = 1.#INF0
    sum=1.#INF0

    Это из-за того, что log(0) стремится к минус бесконечности
    Ответ написан
    1 комментарий
  • Не работает деление в ассемблере. Что я сделал не так?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    mov edx, [arr16] ; заносим в edx первый элемент массива
    mov eax, [arr16+4] ; заносим в eax второй элемент массива

    Начнём с того, что в edx нужно поместить старшую часть делимого, а в eax -- младшую, а на x86 слова в память записываются младшей частью вперёд (little endian).

    Если результат деления не помещается в eax вы получите исключение #DE, а при делении числа 0x0000000100000000 (а именно его вы делите, загрузив в eax 0 а в edx 1) на 1 результат определённо в 32 бита не влезет.

    Вообще, глядя на ваши вопросы создаётся впечатление, что вы хотите реализовать на ассемблере длинную арифметику. Но длинное деление таким образом, как вы пытаетесь сделать, точно не работает. Вам надо либо побитово делить "в столбик", либо аппроксимировать каким-то рядом (либо ещё как-то, как мне не пришло в голову).
    Ответ написан
    1 комментарий
  • Существуют ли такие VPN сервисы, которые игнорируют запросы правоохранителей?

    Jump
    @Jump
    Системный администратор со стажем.
    Все сервисы игнорируют просьбы правоохранителей. Ибо лень.
    Все сервисы выполняют требования правоохранителей, Ибо хочется работать, а не иметь проблемы.

    Существует много сервисов которые утверждают что они не ведут логи, и не реагируют на требования правоохранителей.
    Так же существует множество чиновников которые утверждают, что не берут взятки.
    Ответ написан
    2 комментария
  • Правда ли что без хорошего знания математики (или какой-то отдельной темы) не стать хорошим программистом используя функциональную парадигму?

    @Elizavetta
    Matroid: gamedev/js-разработка
    Все возможно. Просто математики вас на работу не возьмут...
    Опыт программирования маленький и был давно, на перле.

    Не нужно гадать, садитесь за код. Через годик ситуация станет яснее.
    Ответ написан
    Комментировать
  • Верно ли, что чем сильнее "разрознен" массив чисел, тем больше времени займет его сортировка (допустим, пузырьком)?

    @abcd0x00
    Очень похоже на сортировку слиянием и пирамидальную сортировку. Чтобы не изобретать эти сортировки (которые, естественно, быстрее пузырьковой), лучше найди их описание и реализуй каждую по отдельности.
    Ответ написан
    Комментировать
  • Верно ли, что чем сильнее "разрознен" массив чисел, тем больше времени займет его сортировка (допустим, пузырьком)?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Для сортировки пузырьком
    1. имеет значение не средневзвешенное, а только максимальное отклонение позиции элемента от верной.То есть, другими словами, если вы в отсортированном массиве только поменяете местами крайние элементы, то его сортировка пузырьком займет максимально возможное время.
    2. определенно да.

    Для приведенного подхода(отдельно сортировать части потом слить) применяют сортировку слиянием merge-sort.
    Ответ написан
    Комментировать
  • Я хорошо пишу код, но полный ноль в веб дизайне. Как мне подтянуть скилл?

    khipster
    @khipster
    Никак, я серьезно. Это либо есть, либо этого нет. Технари слишком умные, а хороший дизайнер должен быть тупым чтобы смоделировать поведение очень тупого пользователя.
    Ответ написан
    3 комментария
  • Как при ошибке освободить порты?

    @DuD
    Это самый что ни на есть finally из try
    Ответ написан
    Комментировать
  • Как работать с таблицами >1кк строк?

    @AndrewFoma
    Лично я Pandas могу использовать, но не использую, или крайне редко.
    С данными, которые по своей форме "как бы таблицы", можно легко работать. Просто какие требования вы предъявляете к методам работы с данными. И 200 MB это кстати мало, можно обойтись списками.
    1. Можно нагородить "велосипедов" через списки и словари. Примитивно, список, где каждая запись это словарь, а ключ - наименования столбца (поле), а дальше как фантазия подскажет
    2. Можно использовать sqlite, создавая базу в памяти или на носителе. Смотря какой python и сколько памяти, а уж от sqlite - sql запросы. Несколько миллионов sqlite легко вывозит.
    Поэтому: "велосипед", sqlite или pandas.
    Ответ написан
    2 комментария
  • Как объявить 16-байтное двоичное число в assembler?

    Массив
    Ответ написан
    Комментировать
  • Почему сопроцессор в тысячу раз медленнее процессора?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Кто подскажет, что я делаю не так?


    Это:
    clock_t strt = clock();
    ...
    clock_t bk1 = clock() - strt;
    ...
    clock_t bk2 = clock() - bk1;

    bk1 -- это разность абсолютных времён, т.е. продолжительность, а bk2 -- это разность абсолютного времени и продолжительности, т.е. абсолютное время.

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

    С переполнением стека я тоже наблюдаю, что fpu работает ~ в 1000 раз медленнее чем ALU. Но если сбалансировать загрузки, операции и выгрузки так, чтобы стек не переполнялся у меня все работает со сравнимой скоростью. Подозреваю, что там случается исключение, но оно не фатальное и молча глотается ядром.

    Я тестировал следующий код (выкинул вообще всё лишнее):
    #include <stdio.h>
    #include <inttypes.h>
    #include <time.h>
    
    #define MAX_I 4000000
    
    int32_t rezult[64];
    
    void StartPR(int str)
    {
            asm volatile ("mov $4000000, %%eax\n\t"
                          "xor %%ebx, %%ebx\n\t"
                          "xor %%ecx, %%ecx\n\t"
                          "xor %%edx, %%edx\n"
    
                          "circle:\n\t"
                          "add %%eax, %%ebx\n\t"
                          "add %%eax, %%ecx\n\t"
                          "add %%eax, %%edx\n\t"
                          "dec %%eax\n\t"
                          "jnz circle\n\t" ::: "memory");
    }
    
    void StartMMX(int str)
    {
            double v = 4000000;
            asm volatile ("mov $4000000, %%eax\n\t"
                          "fldz\n\t"
    
                          "circle2:\n\t"
                          "fld %0\n\t"
                          "faddp \n\t"
                          "fld %0\n\t"
                          "faddp \n\t"
                          "fld %0\n\t"
                          "faddp \n\t"
                          "fld %0\n\t"
                          "faddp \n\t"
                          "sub $4, %%eax\n\t"
                          "jnz circle2\n\t"
                          "fstp %0" :"+m"(v):: "memory");
    }
    
    void stardThreads(int numOfThread)
    {
            printf("threads: %i", numOfThread);
            int i = 0;
            clock_t strt = clock();
            StartPR(0);
    
            clock_t strt2 = clock();
            clock_t bk1 = strt2 - strt;
    
            StartMMX(i);
            clock_t bk2 = clock() - strt2;
            printf("time block1:%i, block2:%i, tics per second:%i\n", (int32_t)bk1, (int32_t)bk2, CLOCKS_PER_SEC);
    }
    
    int main(int argc, char *argv[])
    {
            int i;
            for (i = 1; i < 9; i++)
                    stardThreads(i);
    
            return 0;
    }


    Результат:
    threads: 1time block1:6949, block2:9311, tics per second:1000000
    threads: 2time block1:4061, block2:7872, tics per second:1000000
    threads: 3time block1:3901, block2:7398, tics per second:1000000
    threads: 4time block1:3615, block2:7045, tics per second:1000000
    threads: 5time block1:3389, block2:6716, tics per second:1000000
    threads: 6time block1:3250, block2:6342, tics per second:1000000
    threads: 7time block1:3189, block2:6036, tics per second:1000000
    threads: 8time block1:3032, block2:5885, tics per second:1000000
    Ответ написан
    4 комментария
  • Как защититься от инсайдеров?

    @Olya_Min
    Студентка Финансового университета
    Вот примерный перечень внутренних документов, который у вас должен быть:
    Положение, в котором вы определяете состав информации, которая является конфиденциальной для вашей организации;
    Положение о сохранении конфиденциальной информации;
    Инструкция о порядке допуска сотрудников к сведениям, составляющим конфиденциальную информацию;
    Положение о специальном делопроизводстве и документообороте;
    Положение о работе с иностранными клиентами и их представителями;
    Обязательство сотрудника о сохранении конфиденциальной информации;
    Памятка сотруднику о сохранении коммерческой тайны.

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

    Вот хороший, учебник по ИБ, он хоть и 2004 года, но основные моменты прописаны хорошо lc.kubagro.ru/zi.pdf

    P.S. Вы говорите об инсайде, но не задумываетесь о том, что может происходить непреднамеренная утечка информации (хотя, если верить исследованиям, именно на неё приходится основная доля потерь конфиденциальной информации).
    Ответ написан
    1 комментарий
  • Как обойти максимальное количество ребер неориентированного взвешенного графа?

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

    Если я ничего не путаю но ночь глядя, то это задача коммивояжёра. Странно, что до сих пор про неё никто ничего не упомянул.

    Задача NP-полная, достаточно быстро (что-то около 60-70 вершин) становится трансвычислительной, для 200 вершин ни о каком полном переборе не может быть и речи. Советую посмотреть метод ветвей и границ.
    Ответ написан
    1 комментарий
  • Стоит ли привлекать к защите домашних данных виртуальные машины?

    @viiy
    Linux сисадмин \ DevOps
    Стоит.
    Только вместо kvm и virtualbox используйте LXC.
    Устанавливать проще простого, а производительность сравнима с хост-системой.
    sudo lxc-create -n new-vm -t ubuntu - создадите контейнер "new-vm" с убунтой.

    Основной профит - меньше мусора на основной системе, апдейт софта можно делать не опасаясь что сломаете что-то другое.
    Ответ написан
    1 комментарий
  • Хорошая книга для улучшения памяти, внимания и запоминания информации?

    ThePyzhov
    @ThePyzhov
    iOS Ninja
    На рутрекере есть эта же книга, только в сжатом формате (без воды).
    Ответ написан
    6 комментариев
  • Социальный фишинг (идентификация пользователей). Как работает?

    Wernalur
    @Wernalur
    Насколько мне известно используется Clickjacking
    Ответ написан
    Комментировать
  • Что значит оборачивание функции в скобки (function() { ... })?

    copist
    @copist
    Empower people to give
    Короткий ответ
    (function() { ... })()
    Это определение анонимной функции без параметров и непосредственный вызов её, так же, без параметров

    Длинный ответ
    Зачем оборачивать значение в круглые скобки?

    Оборачивание функции в скобки, так же как и оборачивание константы в скобки - это просто способ показать интерпретатору, что это значение внутри скобок может быть использовано как возвращаемое значение.
    var var_a = 5
    (var_a) /* или */ (5) // не является ошибкой, возвращает значение переменной или выражения
    function func_b() { }
    (func_b) /* или */ (function func_b() { }) // не является ошибкой, возвращает ссылку на функцию
    var var_c = { key: "val" }
    (var_c) /* или */ ({ key: "val" }) // не является ошибкой, возвращает объект
    var var_d = [ "one", "two" ]
    (var_d) /* или */ ([ "one", "two" ]) // не является ошибкой, возвращает массив


    Ну а раз (func_b) - это ссылка на функцию func_b, то значит её можно сразу же вызвать.
    A если (var_c) - это объект, то значит можно сразу же использовать его
    Аналогично (var_d) - это массив, то значит можно сразу же использовать его

    (func_b)() или (function func_b() { })() вызвать функцию
    (var_c).key или ({ "key": "val" }).key использовать объект
    (var_d)[0] или ([ "one", "two" ])[0] использовать массив

    Синтаксической ошибкой было бы использование функции, массива, объекта без скобок ( )
    function func_b() { }() ошибка "Unexpected token )"

    Хотя нет ошибки, по крайней мере в Google Chrome
    { key: "val" }["key"]
    ["one", "two"][0]

    Для чего вообще придумали самовызывающиеся функции?
    Для того, чтобы изолировать переменные и функции, чтобы они не попадали в глобальную область видимости.

    Сравни
    var a = "test"
    alert(a)

    по завершении этого блока переменная a болтается в глобальной области видимости

    и
    (function(){
        var a = "test"
    })()
    
    alert(a) // недоступно, потому что она была локальной переменной внутри анонимной функции


    Почему скобки ( ) пустые?
    В данном случае у функции function() { ... }нет формальных параметров, значит и вызывать можно без параметров.

    Но вообще в самовызывающуюся функцию можно передавать параметры. Это общая практика передачи ссылок на глобальные объекты:

    (function (w, d, $) {
       // некоторым нравится сокращать код путём использования коротких имён переменных
       w['fizz'] = "buzz" // вот так можно принудительно зарегистрировать
                           // глобальную переменную fizz
       $('body').css({background: 'red'}) // вот так можно работать с jQuery через привычную $
                           // даже если библиотека была загружена в режиме noСonflict
    }(window, document, jQuery))


    Некоторым не нравится длинный вариант проверки на undefined и они специально предусматривают лишний параметр, который не инициализируют

    (function (message1, message2, empty) {
        // это и есть проверка на undefined
        if (message1 === empty)
            alert('message1 is undefined')
        else
            alert('message1 = ' + message1)
    
        if (message2 === empty)
            alert('message2 is undefined')
        else
            alert('message2 = ' + message2)
    })("test") // вызвана только с одним параметром, значит второй по имени message2
    //  будет пустой, а третий empty специально ввели в качестве образца
    //  данных с типом "undefined", для служебного использования

    Зачем функция анонимная?
    Аналогично - чтобы не регистрировать её имя в глобальной области видимости, если она нужна один раз.
    Ответ написан
    7 комментариев