Задать вопрос
  • Как экспортировать файл в svg из photoshop?

    anoraak
    @anoraak
    UI/UX designer
    1. Выделяешь нужные слои с фигурами, далее Слои → Смарт-объект → Преобразовать в смарт-объект.
    2. Заходишь в смарт-объект
    3. Файл →Экспортировать → Экспортировать как... → svg
    Ответ написан
    3 комментария
  • Что действительно пишут на Python как правило в бизнесе?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    • Нейронные сети
    • Инструменты для работы с BIG DATA
    • Скрипты для автоматизации
    • Серверные части веб-сайтов (то, что вы описали - клиентская часть).
    • Боты для соц.сетей.
    Ответ написан
  • Как парсить с wildberries?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Начнём с того, что 500 шт. каждые 5 с - это 100 запросов в секунду. Прокси будут баниться очень быстро при подобном трафике.

    Далее, получение данных мегабыстро имеет смысл в автоматизированных системах торгов на фондовой бирже, а если это в телеграм человеку сливать, то он в любом случае будет реагировать намного медленнее этих 5 секунд. И зачем тогда так часто опрашивать? Если опрашивать с интервалом в 3 секунды, то товары будут приходить с опозданием в среднем 13 минут, максимум 25 минут, что для многих задач вполне приемлемо.

    Советую поговорить с заказчиком ещё раз на тему того, что именно ему нужно.
    Ответ написан
    15 комментариев
  • Как отсортировать объекты по id?

    Seasle
    @Seasle Куратор тега JavaScript
    const mapOptions = (options, values) => option.map(({ option }) => {
        const usedValues = new Set();
        return {
            id: option.id,
            name: option.name,
            slug: option.slug,
            values: values.reduce((acc, { id, value }) => {
                if (id === option.id && !usedValues.has(value)) {
                    usedValues.add(value);
                    acc.push({ id, value });
                }
    
                return acc;
            }, [])
        };
    });
    
    console.log(mapOptions(options, option_values));
    Ответ написан
    7 комментариев
  • Как ускорить работу кода?

    Для таких целей отлично подходит паттерн "worker pool"
    https://gobyexample.com/worker-pools

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

    @micronull
    Go умеет самостоятельно разименовывать указатели при вызове метода.

    Т.е. так как у нас по факту переменная `second` является указателем на структуру `firstStruct`, то мы должны были бы предварительно разименовать, перед вызовом метода `init`:
    var second *firstStruct = &firstStruct{} 
    (*second).init()

    Но Go знает что это указатель и в синтаксисе можно производить вызов метода напрямую, а Go самостоятельно разименует указатель на структуру.
    second.init()

    У конструкции `&secondStruct{}` нет ошибки, так как сигнатура метода описывает работу с указателем на структуру:
    func (f *secondStruct) init() {...}
    Поэтому такая консрукция в данном случае не доступна: var f ifRealization = secondStruct{}
    Ответ написан
    1 комментарий
  • Зачем нужны скобки в данном случае?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    ({a, b, c} = {a:1, b:2, c:3 }) // вези меня браузер! Ну если внутри ничего нет то попытаемся


    let {a, b, c} = {a:1, b:2, c:3 } // слева переменная, справа значения которые в нее нужно положить. Да Повелитель!
    Ответ написан
    3 комментария
  • Стоит ли закрывать сайт от индексации на время разработки?

    Sanes
    @Sanes
    Разрабатывать надо на отдельной копии, потом заливать.
    Ответ написан
    1 комментарий
  • Как метод filter работает с includes в этом коде?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    arr.filter() будет передавать по очереди каждое из чисел массива arr в функцию,
    и оставит в выходном массиве только те числа, для которых функция вернула true. См. документацию Array.prototype.filter()

    Функция должна вернуть true для чисел, у которых первая цифра 1, 2 или 5.

    Один из способов – сделать из числа текстовую строку, и взять её первый символ. Т.е. первую цифру, тоже как текст.

    К строке текста в JavaScript можно обращаться как к массиву – забирая по индексу одну из букв:
    "Habr"[0] // "H" вот тут такой вариант и используют.

    Метод startsWith() — метод строки. Есть только у строки. Тоже годится для получения из строки текста первого символа. Но [0] короче.
    Ответ написан
    3 комментария
  • Почему крупные библиотеки для обработки мультимедиа используют чистый си?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Просто многие библиотеки зависимости используют си, кроме того это очень близко к железу, что для медиа очень важно и помогает использовать расширенные инструкции процессора напрямую.
    Ответ написан
    7 комментариев
  • Как автоматизировать установку программного обеспечения и настройку windows машины?

    3r1k
    @3r1k
    the quieter you become, the more you hear
    Может проще сделать виртуалку, раскатать там всё ПО, сделать бэкап и каждый раз восстанавливать, как новую...
    Ответ написан
    8 комментариев
  • Как автоматизировать установку программного обеспечения и настройку windows машины?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Установили Windows, установили драйвера и все нужное ПО - сделали образ диска. Каждые 4 дня - просто восстанавливать ОС из образа.
    Ответ написан
    Комментировать
  • Есть ли перспективы у бэкендера на Node.js?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Находите себе продуктовую компанию с этим стеком и вперед.
    Только будете писать не только бэк но и фронт
    Ответ написан
    9 комментариев
  • Как принять скобку в переменную из Textarea в jQuery / JavaScript?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    replace() так не работает: ('<test>').replace(['<', '>'], ''); // "<test>"

    Заменить угловые скобки можно так: content = content.replace(/[<>]/g, '');
    Это регулярное выражение / /, которое заменяет "глобально" (флаг g) во всей строке
    любой из симолов внутри квадратных скобок [ ] , на пустую строку ''.

    Уверены, что хотите в превью пропускать любые теги, включая script ? Это может быть небезопасно.

    Более разумная, может, идея – создать в теневой DOM узел с этим HTML, в нём удалить запретные теги через обычные querySelectorAll('script') и затем уцелевшее дерево вставить в элемент для предпросмотра.

    Другой вариант — вставить этот HTML в iFrame с максимально строгими запретами.
    Ответ написан
    1 комментарий
  • Какой можно применить алгоритм для хранение индекса для 50 миллиардов записей в golang?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Немного бухгалтерии. Если взять по максимуму.

    Размер одной записи должен быть порядка 60 + 32 +8 = 100 символов (байт для простоты)

    При 50 млрд записей объем хранимых данных должен быть порядка

    50 000 000 000 * 100 = 5 000 000 000 000 = 5 триллионов байт.

    В дисковом хранении это будет примерно 4.5 терабайта. Задачка для in-memory неподъемная. Нужен диск + мемори.

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

    Вобщем нужна дисковая БД которая встраивается в приложение. На требование менеджеров которые запретили использовать БД забейте. Они ничего не понимают. Делайте БД встраиваемую в приложение. В качестве таких (встраиваемых систем можно поробовать) LevelDb, BerkeleyDb, RocksDb. Они поддерживают индекс класса B+Tree и это даст возможность искать группы записей по одному ID. Для этого класса систем любую запись можно найти за 4-5 дисковых IOPS. Если какдый IOPS стоит 15 мс (это я так мерял свой собственный магнитный HDD) то любой поиск группы ключей для TTFB будет порядка 15 * 5 = 75 милисекунд. Ну если вы поставите SSD - то быстрее.

    По поводу предложений хранить в файлах. До того как обсуждать это - надо уяснить требования по времени отклика. Сколько секунд вы согласны ждать - насколько можно и партицировать (или шардировать ваш файл).
    В простейшем случае мы делим большой CSV файл на 512 partitions по хешу от ID и получаем соотв время фулл-скана всего файла поделенное на 512. Дальше - играйтесь с этим параметром партишенинга выводя его на доступный уровень отклика. Из недостатков - будет россыпь файлов. Надо почиать документацию на вашу файловую систему (ext4?) и тюнить ее так чтоб она не сдохла от такого числа inodes.

    Я поддержу оба сценария. И с встраиваемой БД и с файлами. Но с БД надежнее т.к. есть транзакции а файлы у вас могут быть в крешнутом состоянии долго. И вы об этом ничего знать не будете.

    По поводу Parquet. Не взлетит. Скорее всего индекс по данному типу файла - это совсем не то что вкладывают туда релационные системы. Обычно Parquet/Orc/Delta вкладывают в индекс смысл - отбрасывания тех полосок данных (stripes) которые бесполезны при чтении всего файла. Такой индес - обычно просто либо range-признак либо карта Блума. И в случае с range - дает эффект на сортированных данных. Для прочих - будет бесполезно т.к. фулл-скан все равно обеспечен. А если фулл-скан то зачем тогда вообще индекс.

    Вобщем для дизайна архитектуры нам нужны цифры. Средние длины по колонкам. И я-бы еще запросил кардинальность по полю ID.
    Ответ написан
    7 комментариев
  • Как передать переменную из одной функции в другую?

    @dmshar
    Вопрос не имеет никакого отношения к написанию ботов вообще, ни к telegram в частности. Вопрос имеет отношения к Python, его основам, а так-же к необходимости его изучения.
    Для передачи значений между функциями ВСЕГДА И ВЕЗДЕ существует ТРИ способа.
    1. Классический: в общей вызывающей программе создаете переменную, которую передаете как параметр в обе функции. В одной из этих функций эта переменная заполняется значением, в другой - читается и используется.
    2. Нерекомендуемый: через глобальную переменную.
    3. Для очень сложных систем: через внешний файл.
    Все.
    Вот и выбирайте тот из них, который вам подходит больше.
    Ответ написан
    Комментировать
  • Как защитить видео на сайте?

    sergiks
    @sergiks Куратор тега Веб-разработка
    ♬♬
    Делал сто лет назад проект с видеоуроками. На Амазоне в S3 лежали файлы, раздавались в плеер через CloudFront.

    Перед каждым воспроизведением генерилась уникальная ссылка с подписью, которая привязана ко времени и «живёт» недолго – см. Signed URLs

    Так что если решили вопрос с оплатой Амазона, я бы рекомендовал через них реализовать.

    Или посмотрите сервис Kinescope.ru – они предлагают услугу доставки контента и его защиты.
    Ответ написан
    1 комментарий
  • Как защитить видео на сайте?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    посмотрите на wistia.com, в хитори нашел
    видел на одном канале и просто скачать не получилось, увы - не помню технически как было сделано, и УРЛ забыл
    Ответ написан
    Комментировать
  • Как обрезать json до определённого тега?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Я бы посоветовал превратить JSON в структуру и с ней производить все преобразования. На выходе снова превратить в JSON
    Ответ написан
    Комментировать