• Чем не угодили 2G и 3G?

    @OzzyFox
    Если использовать 10 МГц в диапазоне B1 (2100 МГц) в 3G, можно получить скорости 42мбит/с скачивание и 5,76 мбит отдача.
    Если использовать тот же ресурс в LTE ( т.е. те же 10 МГц), но при этом накинуть модуляцию 256QAM DL, что сейчас встречается повсеместно, и MIMO 4х4, то можно будет получить ~200 мбит/с скачивание и примерно 35 мбит/с на отдачу.
    Эти цифры - округлённый теоретический максимум, который реально получить в идеальных условиях, а вот 80-90% от этих скоростей глубокой ночью уже реально получить.
    Иначе говоря, отключая 2G и 3G, частоты перейдут в LTE/NR, за счет чего повысится ёмкость сети и сможет обслуживаться бОльшее число абонентов.
    Ответ написан
    Комментировать
  • Как откатить iphone 3g на ios 2.0?

    Вероятно следует использовать не текущую версию 3uTools, а инструменты времён самого iPhone 3G
    Ответ написан
    Комментировать
  • Как сделать постоянный поиск по html элементу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Появилась потребность в постоянном поиске по содержимому html элементов и тегов.

    Коробочное решение этого вопроса - это разработка парсера. Это кстати еще и решает другую задачу - перебор 150 страниц которая у вас все равно не автоматизируется.

    Ищите программиста и платите ему деньги.
    Ответ написан
    2 комментария
  • Как ускорить чтение строк из файла?

    egor_nullptr
    @egor_nullptr Куратор тега C
    mmap + ручной разбор, получилось примерно в 10 раз быстрее, чем fgets + sscanf
    Код

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <fcntl.h>
    #include <sys/stat.h>
    #include <sys/mman.h>
    #include <unistd.h>
    
    int main(int argc, char** argv)
    {
        int fin = open(argv[1], O_RDONLY);
        struct stat finfo = {0};
        fstat(fin, &finfo);
        char *map = mmap(0, finfo.st_size, PROT_READ, MAP_SHARED, fin, 0);
    
        char src[4] = {0};
        char dst[4] = {0};
        int cost;
        int i;
        int off = 0;
    
        while (off < finfo.st_size)
        {   
            memcpy(src, map + off, 3); 
            memcpy(dst, map + off + 4, 3);
            i = 0; 
            cost = 0;
            while (map[off + 8 + i] != 10) { 
                cost = cost * 10 + map[off + 8 + i] - 48;
                ++i;
            };
            off += 9 + i;
        };
    
        munmap(map, finfo.st_size);
        close(fin);
    
        return EXIT_SUCCESS;
    }

    Ответ написан
    2 комментария
  • Как выводить несколько значений подряд при клике?

    neuotq
    @neuotq
    Прокрастинация
    Ваш код грязный конечно, даже стили немного.
    Вот я тоже набросал грязное решение. Вам я бы рекомендовал немного переверстать, но в целом(обратите внимание я добавил pointer-events none на .types-select__option-text в css на кодпене это видно)
    Саму идею я думаю вы поймёте и под себя переделаете. Ниже код и кодпен.

    //Данные по содержанию меню
    const furnTypes = [
      {
        'id' : 1,
        'title' : 'Офисная&nbsp;<span>меб</span>ель'
      },
      {
        'id' : 2,
        'title' : 'Техника / сантехника'
      },
      {
        'id' : 3,
        'title' : 'Сборка кухни'
      },
    ];
    
    //Каждое активно может быть только один раз
    const activeMenuItems =   new Set();
    
    const clickHandler = e => {
      if(activeMenuItems.add(parseInt(e.target.getAttribute("furn-id"))) ) {
        //Если поменялся перестроим меню
        updateActiveMenuItems(activeMenuItems);
      }  
    };
    
    //Строим меню на основе данных items, вставляем в target
    //на элементы вешаем событие clickHandler
    buildSelectMenu = (target, items, clickHandler) => 
    {
      //создаем родителя
      const parentUl = document.createElement("ul");
      parentUl.classList.add('types-select__options');
      //Каждый из пунктов
      items.forEach(
        item => {
          const childLi = document.createElement("li");
          childLi.classList.add('types-select__option');
          childLi.setAttribute('furn-id', item['id']);
          childLi.addEventListener("click",clickHandler);
          const childTextBlock = document.createElement("div");
          childTextBlock.classList.add('types-select__option-text');
          // Лучше потом на setHtml заменить, но пока нет поддержки
          childTextBlock.innerHTML = item['title'];
          childLi.appendChild(childTextBlock);
          parentUl.appendChild(childLi);
        }
      )
      //Запихиваем туда куда нужно
      target.appendChild(parentUl);  
      return parentUl; 
    }
    
    const updateActiveMenuItems = ids => {
      
      const parent = document.querySelector('.types-select__active-items');
      parent.innerHTML = '';
      ids.forEach( id => {
        const curItem = furnTypes.find( el => el['id'] === id)
        const activeMenuItemEl = document.createElement("div");
        const activeMenuItemTitleEl = document.createElement("span");
        activeMenuItemTitleEl.innerHTML = curItem['title'];
        const activeMenuItemdeleteButtonEl = document.createElement("button");
        //Лучше через текстовую ноду
        activeMenuItemdeleteButtonEl.innerHTML = 'x';
        activeMenuItemdeleteButtonEl.setAttribute('active-furn-id', curItem['id']);
        
        activeMenuItemdeleteButtonEl.addEventListener("click", e => {
          //Чтобы кликалась не взирая на клик событие родителя
          if(e && e.stopPropagation) e.stopPropagation();
          
          if(activeMenuItems.delete(parseInt(e.target.getAttribute("active-furn-id"))) ) {
            //Если поменялся перестроим меню
             updateActiveMenuItems(activeMenuItems);
          } 
        }); 
        
        activeMenuItemEl.appendChild(activeMenuItemTitleEl);
        activeMenuItemEl.appendChild(activeMenuItemdeleteButtonEl);
        parent.appendChild(activeMenuItemEl);
        
      })
      
    }
    
    // Строим меню
    const furnitureMenu = buildSelectMenu(
      document.querySelector('#furnitureMenu'), 
      furnTypes, 
      clickHandler
    );
    
    document.querySelector('.types-select__btn')
      .addEventListener("click", e => {
        // Странное имя класса, наверное должн быть types-select__menu_active
        document.querySelector('.types-select__menu').classList.toggle("_active");
    } )


    Ответ написан
    1 комментарий
  • На второй точке доступа DHСP надо отключить?

    martin74ua
    @martin74ua Куратор тега Сетевое администрирование
    Linux administrator
    вифи точки роутеров одинаково, dhcp на втором отключить. Кабель включать не в wan порт второго роутера, а в обычный.
    Ответ написан
    4 комментария
  • Как повторить этот эффект перехода слайдера?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Эффектам этим сто лет в обед, и до сих пор каждая дизайн-студия считает своим долгом продемонстрировать миру, как классно они умеют копировать код из интернета.
    К чести конкретного примера стоит сказать, что скопировано более талантливо, чем в среднем по больнице - проведена работа по тому, чтобы привязать эффект к progress конкретного слайда.

    Наиболее близкая демка:
    https://tympanus.net/Development/webGLImageTransit...

    Сама статья:
    https://tympanus.net/codrops/2019/11/05/creative-w...
    Ответ написан
    3 комментария
  • Почему возникает malloc(): corrupted top size?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Вот тут: (long long int*) calloc(len_s1, sizeof(int)); вы выделяете массив int на len_s1 элементов, а потом работаете с ним, как с массивом long long той же длины. Но long long занимает больше байт! Поэтому вы выделяете меньше памяти, чем используете, а это UB.

    В этом случае программа может даже отработать, если повезет. И любое изиенение в ней может непредсказуемо изменить, как ошибка проявится: упадет ли программа, повиснет или просто не так отработает.
    Ответ написан
    1 комментарий
  • Есть ли смысл делать анимацию без JS?

    neuotq
    @neuotq
    Прокрастинация
    Анимация = анимации рознь.

    Конкретный ответ со списком вы тут не увидите, это будет большая статья, со множественными "а вот тут", "но здесь" просто потому что многое зависит от контекста, задач, планирование.
    Главные рекомендации это не делать на js то, что отлично реализуется с помощью css. Этим к сожалению часто болеют многие фронтендеры, особенно из тех кто принципиально не любит вёрстку. Банальные примеры некоторые виды трансформаций объектов при булевых сменах какого параметра(условно навел/убрал наведения, вкл-выкл и тп).

    Но нужно иметь ввиду, что там где у вас выходит сложная логика, разные усложнённые сценарии, динамические параметры запуска и тп и тд. Без js естественно никуда.

    Поэтому просто зная возможности css, имея здравый смысл, вы будете видеть и знать где что использовать.
    К счастью css тоже в последнее время активно развивается давай нам всё больше возможностей.
    Поэтому - простая штука, что-то типа одноразовых анимации, простого повторения, туда сюда - подумать про css.
    Если к этому добавляются всякие реакции на сложные тайминги, старт-пауза перемотать остановить на промежутке и тп - js.
    Ну и безусловно разные сложные, многоходовки с завязкой друг на друга - однозначно js.

    В целом информации на эту тему достаточно в интернете, мудрить здесь особо не стоит. Поэтому повторюсь: просто здравый смысл и держать в уме знание css и не брезговать его использовать. Нередко кстати сами верстальщики уже готовят эти анимации, но это уже отдельный разговор организации команд и внутрипроектной кухни. Я сторонник того что фронтэндер, пусть и не обязан прям верстать верстать, но знать вёрстку/css должен на очень хорошем уровне.
    Ответ написан
    Комментировать
  • С++ На всех ли платформах одинаковая точность операций с float?

    solotony
    @solotony
    покоряю пик Балмера
    В общем ответ - нет. Нет никакой гарантии что операции с плавающей точкой посчитаются одинаково на разных архитектурах. Я на практике с этим сталкивался при решении дифуров, когда из-за проблем с точностью мы получали качествнно разный результат на разных платформах
    Ответ написан
    Комментировать
  • С++ На всех ли платформах одинаковая точность операций с float?

    @res2001
    Developer, ex-admin
    Форматы чисел с плавающей точкой стандартизованы IEEE754.
    Скорее всего, операции выполняемые процессором над числами с плавающей точкой будут давать одинаковый результат на разных платформах.
    Но вот программные реализации различных математических алгоритмов из стандартной библиотеки, типа того же sqrt и т.п., могут отличаться.
    Для гарантии, вам нужно использовать для этих целей какую-то единую библиотеку для всех платформ, а не стандартный math.h.
    Ответ написан
    1 комментарий
  • Как подготовить интернет-магазин к боевому старту?

    @vitaly_il1
    DevOps Consulting
    Оставим в стороне защиту от атак, т.к. по-моему это нереально сделать без использования внешнего сервиса.
    Остается
    - мониторинг - советую подключить site24x7 или подобный сервис для мониторинга URL (включая время ответа) и самого сервера
    - бэкап и восстановление - потренироваться в этом и дважды проверить что все работает
    - sizing - поговорим подробнее

    По данным переписи в регионе около 1 млн.чел, а в столице примерно 300 тыс.

    Очевидно, что кол-во пользователей может быть от нуля до 100 миллионов (если вдруг весь СНГ набросится).
    Как прикинуть возможное кол-во? Если можно найти аналитику аналогичных сервисов - отлично. Если нет - я бы взял с потолка базу в 100тысяч пользователей. Соответсвенно получим нагрузку в минуту-секунды. Осталось только просимулировать - с помощью готовых сервисов (loadimpact.com и т.п.) или готовых программ (gettaurus.org, Locust.io и т.п.).
    Ответ написан
    Комментировать
  • Как реализовать UML диаграмму для javaScript?

    mayton2019
    @mayton2019
    Bigdata Engineer
    моей игре нет классов, а компонент всего один. Как для необъектового javascript кода создать наглядную диаграмму, которая по смыслу будет чем то похоже на UML, или как вообще можно наглядно показать структуру кода схематично?


    Отсуствие классов в современном коде - это нормально. Мы живем в эпоху мульти-парадигменности когда языки не обязаны декларировать классы а могут начинаться с функций. А вместо сущностей использовать анонимные классы (tuples) или кортежи как наборы полей в передаваемых параметрах и просто массивы примитивов.

    Отсутствие UML диаграмм в проекте - это тоже нормально. Я редко встречал проекты покрытые документацией именно в части чертежей, блок-схем всяких драконов и прочих ГОСТов. Более того. Современный ритм разработки и техники Scrum/Agile говорят что рабочий код важнее чем документация. Я с этим до конца не согласен но так оно есть в нашей реальности.

    Чтобы помочь тебе в твоем вопросе - надо посмотреть код. В игре (2д) всегда есть двумерные координаты (Positions), или всякие геометрические фигуры (Bounding Box, Rectangles), ресурсы (картинки и звуки) и их можно описать через классы. Это потребует некоторой переделки твоего кода. Но возможно после этой переделки твой код станет читабельнее.

    P.S. UML диаграмм на самом деле очень много. Там не только классы и компоненты. Есть еще очень полезные диаграммы последовательностей (sequence). Конечные автоматы. Реляционные диаграммы (БД). Схемы деплоймента и прочее.
    Ответ написан
    Комментировать
  • Какие есть бесплатные или платные сервисы Code Review?

    SO - это же сервис для вопросов и ответов, а не ревью.
    А так в принципе есть ещё Jetbrains Space - правда там не только код-ревью, но и CI, и репозитории, и задачи.
    Раньше был ещё Upsource, но он умер с выходом Space.

    Если тебя интересуют услуги по код-ревью, то любая фриланс или менторская площадка.
    Ответ написан
    6 комментариев
  • Docker в Windows, Linux переводы строк, как правильно?

    @Drno
    докер разрабатывался под линукс. и нормально в нем работает. и в прод запускается на линуксовых серверах...
    поставьте виртуалку с ubuntu server и запускайте там докер как угодно. все будет работать
    Ответ написан
    1 комментарий
  • Почему выводится ноль при использовании несоответствующего спецификатора в printf()?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что в функции printf вообще нет приведения типов.
    Она просто берёт переданные данные и трактует их согласно спецификации формата.
    То есть, в вашем случае выполняется не (float)i, а *((float *)&i).
    If any argument after default argument promotions is not the type expected by the corresponding conversion specifier, or if there are fewer arguments than required by format, the behavior is undefined.
    Ответ написан
    4 комментария
  • Значение переменной в двойных кавычках?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    gcc test.c -o test
    test.c: In function ‘main’:
    test.c:3:13: warning: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion]
        3 |     int x = "15";
          |             ^~~~


    то есть сначала компилер обьявляет строковую константу "15" (два символа - 0x31 и 0x35), потом присваивает адрес этой константы в переменную и обнаруживает, что переменная типа int и соответственно нормальное присваивание невозможно.
    Ответ написан
    Комментировать
  • Как настроить параметры поиска в Apache Solr?

    Espritto
    @Espritto Автор вопроса
    Понимаю, что вопрос очень специфический и даже на стэковерфлоу никто не откликнулся, хотел уже дергать непосредственно разработчиков Solr-а но все же разобрался сам по этому отвечаю сам себе...

    1) Надо модифицировать scorer - алгоритм оценки и ранжирования найденных совпадений. В этом алгоритме нас интересует параметр Term Frequency (сокр. TF, обычно он используется вместе со своим братом IDF — inverse document frequency, но в данном случае его трогать не надо). TF подсчитывает количество слов в документе и чем оно больше, тем выше оценка. Нам нужно игнорировать этот параметр, по этому надо найти место в коде движка и прописать, чтобы всегда возвращалось 1. Solr использует класс Similarity для оценки результатов, точнее множество расширений этого класса, реализующие разные алгоритмы. В конфигах ядра базы прописал, чтобы использовался класс ClassicSimilarityFactory а в реализации класса ClassicSimilarity захардкодил, чтобы функция tf() всегда возвращала 1.0f. Поскольку Solr это опенсорский проект написанный да Java то изменение исходников не составляет особого труда. Дальше по инструкции из README билдим проект, запускам - все работает! Убедиться, что расчеты весов правильные можно через дебаг режим в запросе (тогда вместе с результатом будет возвращена отладочная инфа)
    2) на самом деле это и так уже и так работает из коробки, тут ничего делать не надо
    3) как говорилось, есть уже готовый тип text_ru в котором уже настроен русский стеммер. Чтобы текста обрабатывался по "правилу русского языка" нужно либо назвать текстовое поле *_text_ru либо явно создать новое поле в админке в разделе schema и указать ему тип text_ru
    4) это и так будет происходить если использовать тип данных с русским стеммером, то есть слова будут искаться по корню а окончания отбрасываться
    Ответ написан
    Комментировать
  • Какую CMS выбрать для возможности создания страниц с разным текстом?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    WP + Advanced Custom Fields (если предпочтителен WP).
    Strapi (если предпочтителен 1 ЯП (JS) на фронте и бэке).
    Ответ написан
    Комментировать
  • Атрибуты у тега html, зачем?

    sharp97
    @sharp97
    не фонтан но брызги есть
    есть ещё такой dir для иврита вродь используется - а иврит он справа налево пишется, поэтому вот так вот)
    Ответ написан
    Комментировать