Задать вопрос
  • Какие сейчас тенденции в веб-программировании?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    С тем же успехом можно было спросить "Какие сейчас тенденции в программировании?" Web-разработка - это настолько обширная область, что общие тенденции в ней вряд ли возможны. Если брать относительно узкую категорию "Клепание однообразных говносайтов для ИПшников" то да, агрессивный маркетинг 1С всё ещё держит битрикс на плаву.
    Ответ написан
    2 комментария
  • Чем меньше символов, пробелов и пропусков в коде, тем лучше?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Неправильно.
    Названия переменных и функций должны быть говорящими, чтобы их назначение сразу было понятно. Урезать названия до пары символов, лишь бы было покороче, - очень плохо.
    По пробелам, пустым строкам, отступам и пр. есть стайлгайды - рекомендации по оформлению кода. Например, PSR-1 и PSR-12 для PHP, Google Style Guide и Airbnb Style Guide для JS. В компании может быть принят и какой-то свой стайлгайд.
    Ответ написан
    Комментировать
  • Чем меньше символов, пробелов и пропусков в коде, тем лучше?

    Не правильно.

    Код должен быть читаем и понятен человеку. Причем, не только автору, но и «злому маньяку тим-лиду, который вооружен и знает, где вы живёте», как говорится в шутке программистов.
    Для этого пустые строки между блоками кода бывают полезны. Как и комментарии, и длинные осмысленные наименования переменных и фукций.
    Компилятор потом всё равно всё перелопатит по-своему в ацкие бинарные инструкции )

    Как форматировать код — договариваются. Есть общепринятые стандарты форматирования кода (coding style). Например, стандартный для PHP. Или принятый в компании AirBnB для JavaScript.

    Хороший-удобный редактор кода всегда подскажет, где накосячили со стилем вашего кода, почему, и как исправить.
    Ответ написан
    Комментировать
  • Для чего обычно используют wsl в windows?

    Ответ кроется буквально в названии.
    WSL - Windows subsystem for linux.

    Все используют его для запуска каких-то программ, которые либо работают только на Linux, либо на Linux работают лучше, чем на Windows, либо для отладки работы этих программ на Linux.

    Тот же git например работает на Linux быстрее => может быть удобнее создать проект внутри WSL и работать в нём.
    + Сразу получаешь линуксовую консоль, которая работает быстрее, чем powershell.
    + Docker нативно работает
    и прочая и прочая.

    https://learn.microsoft.com/en-us/windows/wsl/about
    Ответ написан
    8 комментариев
  • Как можно запретить отображение рекламы Quiet Media которая вставляется без моего ведома на сайты через HTTP?

    @maksam07
    Установка ssl-сертификата
    Это единственное верное решение по многим причинам. Есть бесплатные сертификаты, которые ставятся за пару минут, но вместо этого вы пытаетесь придумать метод, на реализацию которого уйдет значительно больше времени или нельзя будет реализовать вообще
    Ответ написан
    1 комментарий
  • В каком порядке изучать Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    В том же, в каком и в 2022-м.
    Ответ написан
    1 комментарий
  • Какое оптимальное время въехать в проект?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    От проекта зависит. На моëм проекте например новичкам даже сеньорского уровня до первой простой таски требуется недели две, а выход на 100℅ эффективность занимает 3-6 месяцев.
    Ответ написан
    9 комментариев
  • Работать в IT или продолжить учебу?

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

    Диплом - полезная штука и отказываться от получения образования совсем тоже не следует.

    Лучший выход - перейти на заочку и работать.

    Диплом бакалавра пригодится, чтобы потом получить рабочую визу куда-нибудь в ЕС, например или продолжить обучение на магистратуре, если это интересно.

    На мой взгляд, окончательное решение должен решать непосредственно тот, кого это касается
    Ответ написан
    Комментировать
  • Canvas линия и способ её описания?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Canvas – это растр. Нарисованная линия ничем не будет, кроме набора пикселей на холсте.
    Вы можете сохранять параметры линии, по которым сможете нарисовать ее заново. Но вы не можете сохранить саму линию.
    Ответ написан
    1 комментарий
  • Как из массива строк получить те, у которых длина равна 5?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Дурацкому вопросу - дурацкий ответ:

    `${arr}`.match(/\b\w{5}\b/g) || []
    
    // или
    
    arr.reduce((acc, n) => (n.length ^ '0b101' || acc.push(n), acc), [])
    
    // или
    
    arr.filter(n => n[4] && !n[-~4])
    
    // или
    
    arr.filter(RegExp.prototype.test.bind(/^.....$/))
    
    // или
    
    arr.reduce((acc, n) => ((acc[n.search('$')] ??= []).push(n), acc), {})[5] ?? []
    
    // или
    
    (function xxx(arr, i = 0) {
      return arr.hasOwnProperty(i)
        ? [].concat(5 - [].push(...arr[i]) ? [] : arr[i], xxx(arr, i + 1))
        : [];
    })(arr)
    Ответ написан
    Комментировать
  • Вопроса нет, и все?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Uncaught SyntaxError: Unexpected token < in JSON at position 0
    Читаем. Переводим.
    Открываем инструменты разработчика, вкладку нетворк. Отправляем наш гениальный запрос - смотрим в неменее гениальный ответ от сервера, в котором наверняка что-то типа "ой-вей, ваш пхп код полный шлак, в котором ошибок больше чем на помойной кошке блох". Исправляем ошибки, и - о чудо! Все заработало!
    Ответ написан
    Комментировать
  • Как выполнять вычисления с помощью функций (результат вызова предыдущей должен быть аргументом следующей)?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Решаю задачи на codewars, не могу решить задачу с функциями?

    Да, не можете.
    Ответ написан
    Комментировать
  • Что такое signature и implementation?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    Сигнатура функции - это по сути ее тип, который состоит из списка аргументов с типами и типа возвращаемого значения.
    Имплементация функции - это функция с телом.
    То есть следующие строки - это сигнатуры:
    function position(): MyPosition
    function position(a:number, b:number): MyPosition
    function position(a:number): MyPositionWithDefault

    Это тоже сигнатура: function position(a?: number, b?:number), но она так же является частью имплементации:
    function position(a?: number, b?:number) {
        if (!a && !b) {
            return {x: undefined, b: undefined}
        }
        if(a && !b) {
            return {x: a, b: undefined, default: a.toString()}
        }
        return {x: a, y: b}
    }


    Перегрузки в TS работают по особенному, не так как в других языках. Все дело в том, что на выходе должен получится JS, в котором никаких перегрузок нет. Поэтому перегрузки работают только на уровне типов.
    Поэтому Вы сначала перечисляете список сигнатур, которые станут типом функции для вызывающей стороны, а потом пишите имплементацию, у которой сигнатура должна быть обобщением всех перегрузок, так как именно она используется для проверки типов внутри функции.

    Еще один важный момент для данного примера - это вывод типов. Если где-то тип не указать, то TS попробует его вывести, но делает он это весьма топорно - из первого значения которое будет присвоено переменной, ну и из первого return если речь идет о выводе возвращаемого значения функции.
    В Вашем случае TS выведет возвращаемое значение имплементации из следующей строчки: return {x: undefined, b: undefined}
    Тип такого значения будет:
    interface ReturnTypeOfPosition {
      x: undefined
      b: undefined
    }
    Проблема тут в двух вещах, во-первых в поле b вместо поля y, во-вторых в отсутствии поля default.
    Если исправить так:
    function position(): MyPosition
    function position(a: number, b: number): MyPosition
    function position(a: number): MyPositionWithDefault
    function position(a?: number, b?: number): MyPosition | MyPositionWithDefault {
        if (!a && !b) {
            return {x: undefined, y: undefined}
        }
        if(a && !b) {
            return {x: a, y: undefined, default: a.toString()}
        }
        return {x: a, y: b}
    }
    то все будет ок

    Ну и еще важный момент про перегрузки, TS использует в месте вызова ту перегрузку, которая первой подошла по аргументам, пробуя их в том порядке, как они записаны у Вас в коде, сверху вниз. Соответственно остальные типы в месте вызова будут выводится из данного факта.

    P.S. у меня в профиле есть ссылка на доклад по системе типов TS, про перегрузки там тоже есть. Система типов в TS полностью построена на математике множеств, если понять эту математику, то поймете и TS.
    Ответ написан
    2 комментария
  • Что значит запрет на оказание IT-услуг?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Тебе - ничего. Ты для ЕС - мошка, толкущаяся возле лампы :) Это все во сновном касается юриков, причем наиболее заметным пунктом тая является запрет крипты. Причем, я вовсе не уверен, что это "санкции" :) а не очередное ужесточение в работе с ох..вшими фрилансерами, живущими в России, гадящими России и презирающими Россию. Многое множество их ломанулось уже в Грузию, Армению, Казахстан и даже Монголию (sic!), но есть еще те, кто упорно желает гадить здесь, используя крипту. Спасибо, ЕС!
    Что касается остального:
    - youtube. Скорее всего, придет к блокировке, так же как FB и инста. Думаю, что незаблокирован до сих пор только потому что нечем заменить.
    - windows. M$ здорово виляет задом, то "дам", то "не дам" винду, но процесс отказа от винды запущен - к 01.01.2025 в КИИ винды быть не должно, хотя у физиков я думаю, она еще долго будет.
    - Прочее ПО. Будет постепенно падать в популярности, если немедленно не самозаблокируется. Также есть предположение, что в будущем скачивать лямпортное ПО при наличии хоть сколько-нибудь сносного аналога будет опасно для благонадежности :) которая снова станет важна...
    Ответ написан
    8 комментариев
  • Почему синхронный код в JS потребляет больше памяти?

    Fragster
    @Fragster
    помогло? отметь решением!
    await - это не "синхронно". Это синтаксический сахар. Соответственно, "внутри" всё то же самое, те же промисы и коллбэки. Скорее всего кушать память стало из-за кривого переписывания.
    Ответ написан
    Комментировать
  • Как вы делаете code-review?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    У code review должна быть цель. В моей практике обычно проекты небольшие и там нет отдельных тестировщиков. Получается, что code review отвечает на три вопроса:

    1. Соответствует ли функционал ТЗ?
    2. Создает ли код проблемы команде?
    3. Есть ли тут какой-то специфичный для проекта опыт, который лучше задокументировать, пока мы еще в контексте?


    Получается что-то такое:

    • До выполнения задачи: проводится анализ задачи, формулируется ТЗ. Бывает, что нужно подключиться и помочь с требованиями, с контекстом, в котором все делается. Чем более подробный анализ мы делаем и чем лучше мы понимаем контекст на этом этапе, тем больше вероятность, что потом весь процесс выполнения задачи пойдет как по маслу и code review будет чистой формальностью в конце.
    • До ревью: линтеры проверяют код на соответствие стилю, на отсутствие синтаксического бреда.
    • Дальше - проверка на соответствие функционала ТЗ. Это защита от глупых ошибок в продакшене, которые коснутся пользователей.
    • Потом - на сответствие принятым соглашениям по коду, если они есть в проекте. Обычно это архитектурные паттерны и что-то про зависимости, смотрим не создает ли код проблем окружающим, а то разные глупости порой случаются. Особенно это важно в коде, который не сам в себе, а затрагивает много чего вокруг. Иногда возникает конфликт интересов, когда что-то явно устарело, и соглашения дополняются чем-то. Чем лучше был анализ в начале, тем меньше вероятность, что тут будет, что обсуждать.
    • Дальше уточняющие вопросы по странным местам, если они есть. Это больше с целью узнать контекст задачи, почему приняты те или иные решения. Происходит передача специфичных для проекта знаний в сторону команды. Возможно там же будут какие-то рекомендации по поводу практик, на что стоит обратить внимание в следующий раз. Это будет передача опыта от команды.


    А кто там будет, джун или синьер-помидор - не важно. Все люди ошибаются, и всем нужен контекст происходящего для эффективной работы.
    Ответ написан
    Комментировать
  • Будут ли перспективы работы в IT в будущем?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    уже сейчас тестируют ИИ который абсолютно сам писать код

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

    будет как ситуация с юристами в 90х

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

    Если тут есть действующие программисты, как обстоят дела на рынке IT?

    В мире дела у отрасли радужные, она быстро растёт и развивается, спрос на программистов огромный, зарплаты высокие, рынок соискателя. В РФ пока непонятно, что происходит. Вполне возможно, что российская отрасль ИТ остановит рост на годы. Скорее всего потребность в профессионалах никуда не денется, но вот новички уже будут не нужны и порог входа для них станет преодолим для единиц.
    Ответ написан
    2 комментария
  • Как победить ошибку "This expression is not callable."?

    Lynn
    @Lynn
    nginx, js, css
    Нужно явно рассказать TS-у что если аргумент falsy, то результатом будет число, а в остальных случаях новая функция.

    Например так (песочница):
    type StepFn = (val?: number) => number | StepFn;
    
    function add(val: number): typeof add;
    function add(val: 0): number;
    function add(): number;
    
    function add(val?: number): number | StepFn {
      if (val) {
        return function sum(next?: number): number | StepFn {
          if (!next) {
            return val;
          }
          return add(val + next);
        };
      } else {
        return 0;
      }
    }
    
    console.log(add());
    console.log(add(1)(2)());
    console.log(add(2)(4)(6)());
    console.log(add(4)(6)(8)(10)());
    Ответ написан
    Комментировать
  • Как передать объект в класс js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Можно записать объект в свойство prototype временной функции и наследоваться от нее:
    function fromPrototype(proto) {
        function F() {}
        F.protoype = proto;
        return F;
    }
    
    const obj = {
        _sayHi() {
            console.log(`Hello, my name is ${this.name}!`);
        },
    };
    
    class Person extends fromPrototype(obj) {
        constructor(name, age) {
            this.name = name;
            this.age = age;
          
           if (this.age < 0 ) {
                this.age = 0;
            }
        }
    }
    Ответ написан
    2 комментария