Задать вопрос
  • Как сделать следующий эффект для background?

    Aetae
    @Aetae
    Тлен
    Чуть более сложно чем нужно тебе:



    Упростишь сам, если надо.)
    Ответ написан
    Комментировать
  • Как создать плоский объект из вложенного?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Рекурсия есть:

    const nestedToPlain = (obj, path = '') =>
      Object.entries(obj).reduce((acc, [ k, v ]) => {
        const newPath = `${path}${path ? '.' : ''}${k}`;
        return Object.assign(acc, v instanceof Object
          ? nestedToPlain(v, newPath)
          : { [newPath]: v }
        );
      }, {});
    
    
    const plain = nestedToPlain(example, 'example');

    или

    const nestedToPlain = (obj, keys = []) =>
      Object.entries(obj).reduce((acc, [ k, v ]) => (
        keys.push(k),
        Object.assign(acc, v instanceof Object
          ? nestedToPlain(v, keys)
          : { [keys.join('.')]: v }
        ),
        keys.pop(),
        acc
      ), {});
    
    
    const plain = nestedToPlain(example, [ 'example' ]);

    Рекурсии нет:

    const nestedToPlain = function(obj, keys = []) {
      const result = {};
      const [ push, pop ] = this;
    
      for (const stack = [ obj ]; stack.length;) {
        const n = stack.pop();
        if (n instanceof Object) {
          Object.entries(n).reverse().forEach(([ k, v ]) => stack.push(pop, v, k, push));
        } else if (n === push) {
          keys.push(stack.pop());
        } else if (n === pop) {
          keys.pop();
        } else {
          result[keys.join('.')] = n;
        }
      }
    
      return result;
    }.bind([ Symbol(), Symbol() ]);
    
    
    const plain = nestedToPlain(example, [ 'example' ]);
    Ответ написан
    1 комментарий
  • Ubuntu. Как обновить npm?

    В этом случае выходит ошибка

    Там вам прямым текстом говорится, что у вас не хватает прав на запись в директории. То есть нужно делать через sudo.

    Ubuntu. Как обновить npm?

    sudo npm cache clean -f
    sudo npm install -g n
    sudo n stable

    Почитайте здесь: https://askubuntu.com/questions/426750/how-can-i-u...

    P.S. если для разных проектов нужна разная нода, то можно использовать nvm. Про неё почитать здесь: https://nodejs.org/en/download/package-manager
    Ответ написан
    3 комментария
  • Как получить кол-во просмотров на посте в тг, с помощью тг бота (node js)?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Никак. Боты работают на событиях: пришло сообщение, человек вступил в группу... Получать историческую информацию по сообщениям невозможно.

    Достать такую информацию можно только с помощью клиентского API (MTProto).
    Ответ написан
    2 комментария
  • Какую key-value БД использовать с данными в 10 млрд строк записей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей.

    1) У меня устойчивое дежа-вю. Периодически в топик заходят люди с именно этим вопросом. Разница только в количестве. Кому 1 млрд. Кому 10. Можно также поискать и слинковать эти вопросы в один большой вопрос.

    2) MySQL который указан в тегах - нормально справляется с этой задачей. Он и не такое число строк
    умеет хранить. И если взять MariaDb - там есть куча новых engines которые можно крутить для тюнинга
    именно скорости чтения. Разумеется жертвуя чем-то другим. Транзакциями и записью например.

    3) Непонятно что такое минимальное время? Если использовать дисковую БД типа MySQL то деградация времени
    поиска будет примерно зависеть от логарифма количества строк. Тоесть деградация будет но очень медленно.
    Для 10 млрд индекс по key будет содержать порядка 4-5 уровней BTree дерева. Тоесть дисковой системе
    нужно будет сделать до 5 или до 6 рандомных чтений (если нужные данные лежат в таблице). Это достаточно
    быстро для того чтобы моргнуть глазом за это время. Рандомное чтение любого блока из магнитного диска
    класса SATA-3 занимает порядка 20 милисекунд. Тоесть для 5 уровней - это 100 милисекунд. Для дисков
    класса SSD и это время можно уже считать меньше милисекунды. Точно я не знаю надо мерять.

    Испортить это время может сетевой лаг который в данной задаче мы просто не учитываем. Считаем что сеть идеальна.

    4) Непонятно зачем здесь указан Redis. Его задача не хранить 10 млрд а хранить только горячие
    ключи по котороым идет очень частый доступ. Если автор хочет In-memory хранение - то время можно
    еще сильнее улучшить. Его можно свести практически до нуля (я вангую несколько микро-секунд)
    но придется прикупить планок памяти побольше и посчитать сколько памяти
    надо для 10 млрд key/values неизвестной длины. Вообще крутить регулятор в направлении
    микро-секунд нет особого смысла т.к. другие звенья вашего стека (приложение и сеть) могут
    быть на порядки медленнее а это вообще нивелирует всю пользу от такой оптимизации.
    Ответ написан
    41 комментарий
  • Какую способ написания стилей выбрать для новостного сайта на nextjs?

    i229194964
    @i229194964
    Веб разработчик
    Tailwind CSS
    Ответ написан
    Комментировать
  • Какие преимущества у docker?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Основное, что дает докер - это изоляцию частей вашей системы друг от друга. За счет этого гораздо проще всё настраивать.
    - БД настраивается в отдельном докер-контейнере. В большинстве случаев вы используете стандартный образ и подаете ему только настройки.
    - nginx настраивается в отдельном контейнере вместе с certbot'ом, который будет обновлять вам сертификат ssl.
    - бэкенд поднимаетя в отдельном контейнере на стандартном порту (и порт не будет конфликтовать с другими бэкендами в других контейнерах на том же порту.
    - другие какие-то бэкенды и админки будут рядом сидеть в отдельны контейнерах и не будут конфликтовать друг с другом версиями библиотек. интерпретаторов и чего угодно
    - компиляция и сборка тоже делаются в контейнере, который не запускается в прод, но обеспечивает иоляцию этого процесса так, что другие разработчики легко приступят к работе без долгой и уникальной настройки своего рабочего места.

    Весь набор нужных контейнеров для проекта конфигурируется docker-compose файлом и в большинстве случаев при правильной настойке чтобы поднять дев-стенд или продакшн вам достаточно будет склонировать репу на комп и скомандывать docker-compose up.

    Про слои и переиспольование почитайте в документации к докеру. Докер-образы наследуются накладывая свои изменения слоями. Это экономит место на диске и упрощает всю систему минимизируя число возможных состояний.
    Вся файловая система контейнера не примонтированная извне будет стёрта и забыта при перезапуске контейнера. Так можно быть уверенным, что ваш бэкенд не оставляет лишних неучтенных побочных эффектив. Это упрошает отладку и поиск проблем.
    Ответ написан
    2 комментария
  • Как можно использовать Foreign Key?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Foreign key (внешний ключ) - это механизм, который позволяет связывать данные из двух таблиц в базе данных, где одна таблица ссылается на другую посредством поля, которое является первичным ключом в таблице, на которую она ссылается.

    Использование foreign key имеет несколько преимуществ. Одно из них - обеспечение целостности данных, то есть предотвращение появления некорректных значений в таблице. Когда вы устанавливаете foreign key, вы создаете ограничение, которое не позволит вставить запись в таблицу, если нет соответствующего значения в связанной таблице.

    Чтобы создать foreign key, вы должны выполнить следующие шаги:
    1. Создайте таблицу, которая будет ссылаться на другую таблицу:
      CREATE TABLE table1 (
          id INT PRIMARY KEY,
          name VARCHAR(50),
          table2_id INT,
          FOREIGN KEY (table2_id) REFERENCES table2(id)
      );


    2. Создайте таблицу, на которую будет ссылаться первая таблица:
      CREATE TABLE table2 (
          id INT PRIMARY KEY,
          name VARCHAR(50)
      );


    3. Установите связь между таблицами с помощью ключевого слова REFERENCES:
      FOREIGN KEY (table2_id) REFERENCES table2(id)


    В этом примере, мы создаем таблицу table1, которая имеет поле table2_id, которое ссылается на поле id в таблице table2. С помощью ключевого слова FOREIGN KEY мы говорим базе данных, что это поле должно быть связано с полем id в таблице table2.

    Также мы можем добавить ограничение ON DELETE, чтобы определить, что происходит с записями в таблице, которые связаны с удаленными записями из другой таблицы. Например:
    FOREIGN KEY (table2_id) REFERENCES table2(id) ON DELETE CASCADE

    В этом примере, мы указываем, что при удалении записи из таблицы table2, все связанные записи в таблице table1 также должны быть удалены (CASCADE).

    Таким образом, использование foreign key может значительно улучшить целостность данных в вашей базе данных, облегчить ее обслуживание и предотвратить появление ошибок в будущем.
    Ответ написан
    Комментировать
  • Как можно использовать Foreign Key?

    Очевидный пример:
    Допустим у тебя есть таблица с домашними животными и таблица с хозяевами домашних животных.

    Чтобы указать у животного, кто его владелец - ты заводишь колонку "идентификатор владельца".

    И вот чтобы гарантировать, что эта колонка всегда содержит реально существующий идентификатор, и что, например, никто не удалит владельца, к которому привязаны какие-то животные - ты можешь завести foreign key.

    В случае попытки удалить запись о владельце, на которого кто-то ещё ссылается, или при попытке указать несуществующий ИД - СУБД выдаст ошибку, что было нарушено ограничение.
    Ответ написан
    4 комментария
  • Почему в input number в safari можно вводить всё?

    modelair
    @modelair
    unsocial
    ответить на этот вопрос могут разработчики safari
    а решить можно так:
    <input type="text" oninput="this.value=this.value.replace(/[^0-9]/g,'');" id="mytext"/>
    Ответ написан
    3 комментария
  • А в чем минусы node.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В том же в чем его и плюсы.

    Асинхронность... ее там нет. Там есть event loop что позволяет писать крайне эффективные программы в плане работы с I/O (что для web очень неплохо) и не париться о таких вещях как потокобезопасность, блокировки и т.д. А если еще и несколько инстансов приложения запусть - по одному на ядро скажем, то утилизация вычислительных мощностей выйдет неплохой. Но распаралелить что-то в рамках одного процесса воркера мы уже не можем. Мы не можем посчитать что-то, проанализировать, заняться обработкой жирной картинки прямо при обработке запроса потому что наш процесс воркер так же обрабатываете еще пару десятков запросов, и пока мы будем удовлетворять нужды одного простаивать будут все. Нода хороша когда у нас все состоит из элементарных операций которые не занимают много времени, все жирное надо выносить из основного процесса и разруливать очередями и т.д. Эта проблема имеет массу решений на самом деле, но все уже усложняется и нода теряет свою красоту. Лучше взять Java/c#/Python для этого (и не надо тут вспоминать про шутки с многопоточностью в CPython).

    callback-hell. Собственно наличие event loop диктует так же правила о том, как должна писаться программа. Кучи колбэков, невозможность дебажить нормально и получить четкий стэктрейс из ошибки. Да, есть промисы которые решают первую проблему, да есть либы вроде zone.js которые решают вторую и частично первую проблему... но все это не тривиальное дело.

    Собственно... разработка больших и сложных проектов на ноде возможна... но требует от разработчика хорошие знания и понимание того, как работает его платформа. А это увеличивает стоимость разработки в то время как можно взять более эффективные в этом плане инструменты.
    Ответ написан
    10 комментариев
  • На чем дешево и долго хранить десятки Тб информации сейчас?

    @alexalexes
    Я думаю, 10 дисков с технологией записи CMR и без гелиевого наполнения по 8 Тбайт, запертые в сейфе в негорючем помещении с постоянным микроклиматом, будут куда дешевле и проще в эксплуатации, и пролежат 15 лет. Чем возиться с ленточным накопителем и лентами.
    Ответ написан
    Комментировать
  • Подходит ли мой ноутбук для веб / мобильной разработки?

    @kalapanga
    Да что же это за разработчики пошли, которые не могут посмотреть на системные требования программ, которые они используют (или собираются использовать)?
    Ответ написан
    Комментировать
  • Можно ли сказать, что Гит работает на блокчейне?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нет. Гит не является блокчейном потому-как в него не закладывались требования по кворуму и гарантий уникальности и нефальсифицируемости истории.

    В git нет понятия блок. И нет алгоритмов POW для подтверждения потраченной работы.

    В git владелец может убить master-бранч что само по себе - принципиально невозможно в криптовалютных проектах

    UPD: Почему я привлекаю именно юзкейс криптовалют. Потому что в наше время блокчейн плотно ассоциирован именно с этой технологией. Хотя само по себе определение блокчейна может быть либеральнее чем я описал. Например POW может и не быть. Просто рассматривая git надо обозначить его сравнительные недостатки чтоб не было в теме попыток спекулировать просто на похожести этих двух технологий. Да они в чем-то похожи но блокчейн во много раз строже по безопасности. Ведь хранение журнала фин-операций - особая и деликатная задача.
    Ответ написан
    3 комментария
  • Xeon e5 2670 v3 в after effects?

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    Работать будет
    Ответ написан
    Комментировать
  • Как открыть консоль браузера на Андроид смартфоне?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    https://developer.chrome.com/docs/devtools/remote-...
    Подключаем телефон к компу, открываем на телефоне сайт и на компьютере видим что в консоли телефона.
    Ответ написан
    Комментировать
  • Как отправлять уведомление с Nest на клиент?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вариантов пока всего два (четыре):
    1) Websockets - для этого нужно на стороне сервера иметь websocket сервис. Реализуется на много чем, начиная от nodejs, и заканчивая С
    2) SSE (Server Sent Events) - для этого почти ничего не нужно, но сервер должен это уметь.
    3) Long Pooling - вообще ничего не нужно, просто нужно уметь в эту технологию
    4) Просто опрос по времени - заводите таймер и по таймеру смотрите приход новых сообщений.

    Первые две технологии используются в так называемых push-сервисах.
    Ответ написан
    1 комментарий
  • Возможно ли выбрать другой браузер в puppeteer?

    @thesirvlad
    Puppeteer может работать с несколькими браузерами, включая Google Chrome, Chromium и Firefox. При запуске браузера в Puppeteer вы можете указать путь к исполняемому файлу браузера, а также опции командной строки.

    Например, чтобы использовать Firefox вместо Chrome, вы можете установить соответствующий бинарный файл и указать его путь в опциях запуска браузера:
    const puppeteer = require('puppeteer-firefox');
    
    const browser = await puppeteer.launch({
      executablePath: '/path/to/firefox',
      headless: true,
    });

    Также может потребоваться установить соответствующий драйвер для Firefox, если он не установлен по умолчанию.
    Ответ написан
    Комментировать
  • Почему такой разброс цен в VPS/VDS?

    @Drno
    потому что яндекс и мейл это уже госкомпании.
    потому что в РФ хорошая прибыль считает 500%, а не 20%-50%....
    ну и плюс всякие сертификации фсб, фстэк итд итп... которые нахер никому не нужны по сути.
    так же размещение сереров в РФ в ДЦ рф, ну по большей части...

    сиди там где дешевле и лучше, я вот на хетзнере сижу, мне всё по кайфу)
    а яндекс с мейлом с такими ценами пусть дальше лохопедов из госорганов ищут

    UPD - ты еще Селектел посмотри...)) с их ценами... я за треть цены на хетзнер серваки беру...
    Ответ написан
    3 комментария
  • Память SSD накопителя меньше заявленной?

    VoidVolker
    @VoidVolker Куратор тега Железо
    Dark side eye. А у нас печеньки! А у вас?
    1. Проверить, что разделы занимают весь диск, а не его часть. Например средством управления диском или любым менеджером разделов.
    2. Проверить маркировку диска - та ли это модель или не совсем.
    Ответ написан
    Комментировать