• Мертвы ли шаблонизаторы?

    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 комментариев
  • Правда ли, что если изучить Фронтенд а потом начать изучать Бэкенд, ты почти забудешь Фронтенд?

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

    xenon
    @xenon
    Too drunk to fsck
    Я считаю себя скорее бэкэндщиком, и да - много раз пришлось фронт заново повторять, вспоминать очевидное, потому что тяжело решать какую-то простую "фронтовую" задачу раз в 2-3 года. За это время все забываешь, да.
    Точно так же забывается golang, если долго программируешь на python, и вообще любые неиспользуемые знания пропадают - так уж мозг устроен.

    Но две важных вещи:
    1. Вспоминать забытое - просто и быстро, это не учиться с нуля. Скорее всего какой-нибудь cheatsheet поможет из сети или самодельный. Они не пропадают совсем.
    2. Это все равно надо. Хороший специалист в любой сфере должен иметь некоторое представление и о смежных вещах. Бекэндщику никуда без хотя бы базовых знаний по фронтенду. Фронтендщику бэк, наверное, нужен немного меньше, но если хочется быть ценным специалистом - то все равно нужно.
    Ответ написан
    Комментировать
  • Нужно ли хорошо разбираться в алгоритмах джуну?

    @kalapanga
    Вопрос этот о необходимости знаний алгоритмов в той или иной форме всплывает здесь часто. Напишу своё субъективное мнение.
    Начинающему программисту знание алгоритмов больше всего может пригодиться на собеседовании, если собеседователь не придумает ничего лучше, чем заставить Вас при нём писать реализацию вот такого-то алгоритма!
    А потом может оказаться так, что Вы за всю жизнь не обошли ни одного графа (не писали код для этого), а для сортировки Вам всегда хватало стандартной процедуры из любимого языка.
    По-моему, программист молодец, если он знает, например, сам факт, что методы сортировки могут иметь разную эффективность в зависимости от характера данных и при необходимости найдёт и выберет нужный. А держать все их названия и реализации в голове - надо ли? Всё, что не применяется на практике, один чёрт, забудется.
    Ещё раз повторюсь, что это моё сугубо личное мнение, и я на нём ни в коем случае не настаиваю.
    Ответ написан
    Комментировать
  • Какими наводящими вопросами деликатно определить, процветает ли в компании микроменеджмент либо нет?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Прямо спрашиваешь, кто будет давать мне задачи и кто будет контролировать.
    Есть ли почасовой контроль какими-либо инструментами.

    Ваш вопрос про "какая оплата" - ВООБЩЕ не про это.
    Может быть даже, что в компании может быть несколько проектов/команд и на какой-то одном проекте сидит "эффективный" менеджер, который увлекается микроменеджментом.
    Ответ написан
    Комментировать
  • Как указать путь к файлу при импорте в TypeScript?

    @iljaGolubev
    Возможно import App from "./App.vue"; поможет.

    А ещё, создать в корне файл shims-vue.d.ts если ещё нет чего-то подобного. Нужно указать ts компилятору что делать с sfc компонентами vue.
    declare module "*.vue" {
      import type { DefineComponent } from "vue";
      const component: DefineComponent<{}, {}, any>;
      export default component;
    }
    Ответ написан
    1 комментарий