• В чëм сейчас пишут документацию?

    vabka
    @vabka
    Токсичный шарпист
    Я бы посмотрел в сторону latex, если формул прям много и нужна на выходе адекватная пдфка.

    Схемы - уже зависит от характера схем. Если это какие-то архитектурные диаграммы и блок-схемы с описанием алгоритмов, то я бы взял plantuml и mermaid.

    А про wysiwig бы забыл как страшный сон.
    Ответ написан
    9 комментариев
  • Как вызвать функцию с "именованными аргументами" в JS?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    В целом - ответ "никак". Потому что так делать не надо. Это не очевидно. Код с душком.

    Но если очень хочется, то такие варианты:
    1) Нормальный вариант (даже без душка):
    func(1, undefined, undefined, 2)
    2) Нормальный вариант - объявлять не переменные, а объект на вход c деструктуризацией его свойств:
    function func({ a, b, c, d }) {
      return a+d
    }
    func({ a: 1, d: 2 });

    То есть это сокращённый вариант от такого:
    function func(data) {
      return data.a+data.d
    }
    func({ a: 1, d: 2 });

    3) Грязный вариант - создать новую функцию с забинжеными аргументами:
    function func(a,b,c,d) { return a+d }
    var badFunc = (a,d) => func.bind(null, a, undefined, undefined, d)();
    badFunc(1,2)
    Ответ написан
    4 комментария
  • Можно ли припаять флешку к флешке?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Сама идея объединения USB устройств в хабы - заложена в протокол. Благодаря ему и существуют всякие портативные разветвители для ноутбуков. Тоесть 1 слот и там ... до хрена устройств подключить. Это
    как TCP сеть в миниатюре. Вообще после всяких COM/LPT слотов USB шина была прорывом. Размножение
    устройств например на SCSI кабеле было реализовано за счет электрических свойств самого кабеля.
    USB после этого конечно верх удобства.

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

    А так можно попробовать просто вставить 2 флешки в хаб и как-то объединить их в один логический
    volume средствами ОС Linux например. Правда надежность такого волума будет падать.
    Если какое-то устроство отъезжает от случайного шатания слота - то весь диск будет развален.
    Ответ написан
    Комментировать
  • Какое ПО есть для отображения информации на телевизоре?

    datka
    @datka
    В голову приходит только https://magicmirror.builders/
    ну а дальше самому дорабатывать.

    Либо создать локальную страницу и в браузере на телевизоре ёё открыть.
    Ответ написан
    1 комментарий
  • Что написано в .BAT файле?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    Удаление пиратского загрузчика.

    Запускаешься в режиме восстановления ОС - она сама все сделает.

    P.S. ты запускаешь левые скрипты, даже не узнав что он делает? Гениально)
    Ответ написан
    6 комментариев
  • Мертвы ли шаблонизаторы?

    neuotq
    @neuotq
    Прокрастинация
    Легкое гугление вам покажет что это не так, даже из устаревшего списка много кто живой и развивается.
    Но зачастую сами шаблоны сильно зависят от архитектуры и целей приложения. В мире JS с своими SSR React/Vue и ко в купе с тем что node все ближе по похожести на браузерный js, то вопрос разных шаблонизаторов не стоит столь остро. В реакте с его JSX и прочими штуками зачем мне pug, там даже особо код и читабельнотсь не улучшится. А по функционалу тем более, ну и плюс лишняя зависимость. Ну и подобная логика в других проектах.
    Так чо шаблонизаторы живы, умирают не нужные. Много где есть свои встроенные штуки. В любом случае на чистом html) пишут редко, либо что-то мелкое.
    А во многих других фреймворках/языках с ними всё ок, развиваются активно.
    Ответ написан
    Комментировать
  • Почему утверждается, что int32_t имеет ширину точно 32 бита, если он является всего лишь псевдонимом int, который может быть больше 32 бит??

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Смотрите документацию. Там действительно утверждается, что int32_t должен иметь размер ровно 32 бита ("exactly").

    Где вы взяли, что int32_t - это псевдоним int?
    Подозреваю, что там, где вы это видели, куча #ifdef и проверок архитектуры.
    Возмножно, на вашей системе, где int итак имеет 32 бита так оно и есть. При компиляции на другую архитектуру внезапно может оказаться, что int32_t - нифига не псевдоним к int.
    Ответ написан
    3 комментария
  • Как собрать rust проект оффлайн?

    vabka
    @vabka
    Токсичный шарпист
    Добавь опцию --offline
    cargo build --offline
    Эта опция гарантирует, что при сборке cargo не полезет в интернет.

    Предварительно тебе нужно загрузить все зависимости при помощи cargo fetch или cargo vendor

    https://doc.rust-lang.org/cargo

    UPD: Раз не понял, то вот полный рецепт, как использовать cargo vendor:
    1. Создал проект через cargo init
    2. Добавил зависимость через cargo add rand
    3. Включил вендоринг через cargo vendor (с доступом в интернет)
    4. Добавил файл .cargo/config.toml с содержимым
    [source.crates-io]
    replace-with = "vendored-sources"
    
    [source.vendored-sources]
    directory = "vendor"

    Так меня попросил сделать cargo после вызова cargo vendor

    5. Пишу код...
    fn main() {
        let x: i32 = rand::random();
        println!("{}", x);
    }

    6. Собираю cargo build --release --offline (без доступа в интернет)

    Сборка успешно проходит, никаких обращений в интернет нет.

    При этом папку с проектом я могу легко перенести на другой компьютер и также собрать без интернета.
    Ответ написан
    Комментировать
  • Понимание аспектов JavaScript?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Строковый примитив преобразуется в объект только при выполнении методов объекта, причём при преобразовании используется копия значения примитива, сама переменная не меняется.
    x = 'foo'
    x // "foo"
    x.length // 3
    x === 'foo' // true
    
    x = new String('foo')
    x // String { "foo" }
    x.length // 3
    x === 'foo' // false

    При этом методы, как правило, возвращают не объекты, а примитивы.
    x = new String('foo')
    x === 'foo' // false
    x.substring(0, 3) // 'foo'
    x.substring(0, 3) === 'foo' // true
    Ответ написан
    Комментировать
  • Как определить длину числа через регулярку?

    XanXanXan
    @XanXanXan
    Потому что внутри 12345678910111213 есть число от 1 до 12.

    /^\d{1,12}$/
    Ответ написан
    7 комментариев
  • Как определить длину числа через регулярку?

    Stalker_RED
    @Stalker_RED
    let num = '12345678910111213';
    const x = Number(num); // преобразуем в число или NaN
    console.log(x < 1e12)

    если возможны отрицательные числа, то x > -1e12 && x < 1e12
    Ответ написан
    Комментировать
  • Что посоветуете изучать дальше?

    Steel_Balls
    @Steel_Balls
    А теперь остановись и ничего не читай.
    Пришло время практиковаться. Устраивайся в команду работать.
    Через два-три года практики снова возвращайся к книгам, чтобы понять что ты писал говнокод и как ты мог его изменить. И начинай всё переписывать или уходи в другую команду с новым опытом
    Ответ написан
    8 комментариев
  • Что посоветуете изучать дальше?

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

    "Разработчик ПО" - таким термином можно буквально любую вакансию разработчика описать (исключение - железячники)

    Какой у тебя выбор:
    1. Посмотреть, где востребован язык Си и C++, выбрать то что тебе интересно, продолжать учёбу в этом направлении.

    2. Раз уже упомянуто winapi - значит ты хочешь разрабатывать десктопные приложения под Windows. Тут действительно очень популярен C#, хотя саму сферу я бы очень уж большой не назвал. Тогда изучай C# и какой-нибудь WPF.
    winapi и WinUI, в принципе, можно изучать и с C++.

    3. Раз уже прозвучал C#, то тут могу посоветовать более популярное направление в нём - разработка бэкенда (серверного ПО) на asp net core.
    Ответ написан
    2 комментария
  • Связаны ли JS-селекторы в функциях поиска по элементам с поддержкой их в CSS?

    modelair
    @modelair
    unsocial
    это не js-селекторы, а css-селекторы, поэтому - да, будет работать как предполагается.
    почитайте документацию к querySelector
    Ответ написан
    Комментировать
  • На 32 строке выдаиоть undefined, не могу понять почему?

    Mi11er
    @Mi11er
    A human...
    const deliver = await deliverToys(make);
    console.log(deliver);

    А что функция deliverToys вообще возвращает ? По коду, ничего, кроме лога в консоль
    Ответ написан
    2 комментария
  • Почему программа на языке C не выполняется?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Оно не компилируется. Нажмите показать ошибки, там будут детали.

    Просто догадки:
    У вас опечатка - функция mian вместо main.
    Потом, в конце функции должно стоять return 0;
    Ответ написан
    4 комментария
  • Для чего нужен lock в python? Как работает данный пример кода?

    Vindicar
    @Vindicar
    RTFM!
    Это объясняется тем, что в базовом питоне потоки не вполне честные - они конкурируют за global interpreter lock, так что код выполняется всё равно поочерёдно. Так что многопоточность в питоне полезна с точки зрения распараллеливания, но не ускорения. ЕМНИП, есть реализации питона, в которых нет этой GIL problem.
    Но нужно иметь ввиду, что этот GIL блокирует только элементарные операции (как в твоём примере), тогда как явное использование lock может накрывать целые блоки кода, состоящие из нескольких операций с защищаемым ресурсом.

    Вот тебе пример:
    import threading
    import time
    
    class Data:
        def __init__(self):
            self.x: int = 0
            self.y: int = 0
    
    
    do_sleep = False
    run = True
    
    
    def reader(d: Data):
        while run:
            x, y = d.x, d.y
            # по идее это условие не должно выполниться никогда
            if (x != 0) != (y != 0):  
                print(f'Got x={x} and y={y}')
            else:
                print(f'OK {x}', end='\x08\x08\x08\x08')
    
    
    def writer(d: Data):
        while run:
            if d.x == 0:
                d.x = 1
                if do_sleep: pass
                d.y = 1
            else:
                d.x = 0
                if do_sleep: pass
                d.y = 0
    
    
    do_sleep = False
    instance = Data()
    reader_thread = threading.Thread(target=reader, args=(instance,), daemon=True)
    writer_thread = threading.Thread(target=writer, args=(instance,), daemon=True)
    reader_thread.start()
    writer_thread.start()
    try:
        input()
    finally:
        run = False
        reader_thread.join()
        writer_thread.join()


    На моей машине, если if do_sleep: pass закомментировать, то в консоли высвечивается только OK - иными словами, присваивание двух полей выполняется достаточно быстро, чтобы поток не успел переключиться в промежутке. Как следствие, reader() всегда видит либо x=0 y=0, либо x=1 y=1.
    Но если if do_sleep: pass оставить, то выполнение тела цикла замедляется достаточно, чтобы поток успел переключиться - и, как следствие, reader() начинает видеть структуру данных Data в неконсистентном состоянии, когда x=0 y=1 или когда x=1 y=0.
    И вот чтобы не гадать "успеет - не успеет", нужно в таких случаях защищать связные серии обращений к структуре с помощью мьютекса, ну или в питоновских терминах - Lock.
    Ответ написан
    Комментировать
  • Для чего аргумент запроса пишут с подчеркиванием _req?

    XanXanXan
    @XanXanXan
    Чтобы компилятор не ругался на неиспользуемую переменную.
    Ответ написан
    Комментировать
  • Как пропустить китайские иероглифы через регулярку?

    scoffs
    @scoffs
    Frontend | C# | Student
    Возможно это поможет
    _string.replace(/[^a-zа-яё\u4E00-\u9FFF0-9 `,:-]/gim, " ")


    \u4E00 - начальный символ диапазона китайских иероглифов в кодировке Unicode.
    \u9FFF - конечный символ диапазона китайских иероглифов в кодировке Unicode.
    Ответ написан
    5 комментариев