Задать вопрос
  • Как избежать преждевременной оптимизации? Или как не зная что будет потом в проекте, обрабатывать исключения?

    @Akela_wolf
    Extreme Programmer
    Для вашей ситуации придумали интерфейсы.

    Вот смотрите, есть логика вывода (Котлин, надеюсь понятно что этот код делает):
    interface Report {
      fun getAverageTime(): BigDecimal
    }
    
    fun printReport(report: Report) {
      println("Average time: ${report.getAverageTime()}") 
    }

    Мы получаем данные из отчета. И нас в этом месте мало волнует как именно эти данные рассчитаны и как обрабатывается 0. Это логика отчета. Мало того, у нас может быть несколько разных реализаций интерфейса Report, каждая из которых обрабатывает этот случай каким-то собственным образом, вплоть до того что кидает исключение и, в результате, возникает ошибка (обработка такого исключения за рамками этого примера).

    Теперь у нас возникает необходимость добавить еще один параметр в отчет:
    interface Report {
      fun getAverageTime(): BigDecimal
      fun getCountWithZeroTime(): Int
    }
    
    fun printReport(report: Report) {
      println("Average time: ${report.getAverageTime()}") 
      println("Participants have zero-time: ${report.getCountWithZeroTime()}")
    }


    И никакой преждевременной оптимизации, только структурированный код.
    Ответ написан
    Комментировать
  • Нормально ли комментировать верстку?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer
    слишком много комментариев лишних

    Ключевое слово – лишних.
    Лишних быть не должно.

    Вот в этом месте
    <!-- nav item -->
    <li class="header__menu-item">
        <a href="./contacts.html" class="header__menu-link">КОНТАКТЫ</a>
    </li>
    <!-- nav item end  -->

    комментирование абсолютно лишнее. Это визуальный мусор.

    Разметку комментировать не нужно.
    В верстке бывает полезно выделить блоки комментариями.

    Что я имею ввиду: если вы просто верстальщик и результат вашей работыбудет передан программисту для интеграции в CMS, то он будет вам благодарен, если вы выделите основные блоки комментариями, особенно, если разметка блока большая и не вмещается в один экран. Просто так будет проще скопировать кусок кода, чтобы перенести его в шаблон системы управления сайтом.

    Если же вы тот самый программист, то html комментарии в результате вашей работы соверщенно излишни.
    Ответ написан
    Комментировать
  • Как суммировать столбцы?

    @Akela_wolf
    Extreme Programmer
    SELECT SUM(confirmed_ones) AS confirmed_ones, SUM(rejected_ones) AS rejected_ones FROM (
      SELECT ... /*тут ваш запрос из вопроса */
    )
    Ответ написан
    Комментировать
  • Есть ли какая то статья, где будет соотношение кол-ва одновременных юзеров на сайте и рекомендуемой конфигурации сервера?

    @dimuska139
    Backend developer
    Нет, потому что 500 человек, грузящие на сервер видео для обработки, и 500 человек, просто читающие на сайте статьи - это совершенно разные вещи, которые требуют совершенно разные конфигурации сервера.
    Ответ написан
    Комментировать
  • Как с помощью return вернуть две переменные?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Есть очень нужно то то используй "кортеж".
    Не лучшая практика как поговаривают, но если нужно именно так и не иначе, то почему и нет.

    public (int, string) GetUser(){
    int a = 14;
    string b = "Roman";
    return (a,b)
    }
    Ответ написан
    Комментировать
  • Почему vs code не подчеркивает ошибки?

    1. У тебя должен стоять C# плагин
    2. У тебя должен стоять .net SDK на компе
    3. У тебя должен быть не голый файл, а проект (рядом должен быть csproj)
    Вот тут подробнее:
    https://qna.habr.com/q/947675#answer_1889815

    PS: Для голых файлов есть .csx
    Ответ написан
    2 комментария
  • Как сделать так чтобы в назначенное время код переставал работать?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Любой код, не завязанный на сторонний сервис хотя бы частично, можно "оптимизировать" для работы без вас )
    По этому любые варианты кода в аренду не работают. Ну или работают недолго. Можете разбить код на части, типа клиент-сервер, клиентская часть будет выполнять запросы к вашему серверу, а сервер уже выполнять ваш мегасекретный алгоритм сортировки пузырьком...
    Ответ написан
    Комментировать
  • Почему при проверке массива на наличие только четных чисел выдает true, даже если там нечетные числа?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Потому что как только вы встречаете чётное число, вы возвращаете true вне зависимости от того, что там было до него и будет после. Т.е. ваша функция проверяет, фактически, есть ли в массиве хотя бы одно чётное число.
    Ответ написан
    2 комментария
  • Как проверить объект на пустоту js?

    twobomb
    @twobomb
    По идее так
    function empty(obj){
    	return Object.keys(obj).length == 0 || Object.keys(obj).every(e=>!obj[e]);
    }
    Ответ написан
    2 комментария
  • Почему вычисления происходят именно так?

    Stalker_RED
    @Stalker_RED
    JS тут не при чем, это особенности вычислений с плавающей запятой, и они описаны в стандарте IEEE 754, и именно так работает большинство процессоров.
    Если вы хотите чтобы работало "согласно ожиданиям", то есть варианты:
    1. подкорректировать свои ожидания, и работать как все.
    2. использовать библиотеки для всяких длинных арифметик и прочих повышенных точностей, платя за эту точность скоростью вычислений.
    3. использовать языки, которые будут маскировать проблему, округляя числа втихаря (и рисковать нарваться на неточности уже из-за этих округлений, ага).

    https://0.30000000000000004.com/ -- тут подробно, с примерами на разных языках.
    Ответ написан
    3 комментария
  • Как реализуется enum в JS из Typescript?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Потому что enum в typescript может мержиться:
    Валидный код:
    enum Membership {
      Simple,
      Standart,
      Premium
    }
    
    enum Membership {
      SimpleX = 99
    }

    Почему компилятор не собирает его воедино, если такие штуки тока на этапе компиляции работают - я хз, но наверное есть причины.
    Ответ написан
    3 комментария
  • На собеседовании сказали, что не все функции - замыкания. Так ли это?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    парень. Всё равно ты будешь использовать ту терминологию, которую используют на работе. Если там под замыканием подразумевается замыкание с инкапсуляцией, то после того как тебе сказали что "твой код - говно", было два варианта: 1)поговорить о терминах либо со ссылкой на официальную документацию, либо вместо с собеседником вывести определение исходя из смысла понятия, не прибегая к авторитетам вообще. 2) Сказать о том, что прочитал такое определение у %авторитет%, и сказать, что готов использовать то, которым пользуетесь вы на работе.

    По поводу выведения определения: есть смысл замыкания. Его нужно чётко озвучить согласиться с ним. Например, ты хочешь сказать, что смысл замыкания это ничто иное как "повесить ссылку на переменную с которой окончена работа до объявления функции, для сейва от мусорщика". Спросить - согласен ли с этим собеседник, или есть дополнения/возражения. Если согласен - значит "функция, являющаяся замыканием - любая функция, которая ссылается на переменную вне своего тела, в случае если переменную иначе удалил бы сборщик." Далее нужно договориться, что "иначе удалил бы" можно опускать как лишнюю сущность, которая усложняет определение такой функции, и упростить до - "функция, ссылающаяся на переменную вне своего тела."

    Есть второй вариант: собеседник тебе говорит: "Ахтунг! Замыкание используется не просто для того, чтобы спасти переменную от удаления! Это ещё и способ сокрытия данных: замыканием можно использовать локальную глобальную переменную, вместо того чтобы использовать просто глобальную переменную, или же городить отдельный класс."
    В этом случае всё твое определение идёт в пешее эротическое, и ты соглашаешься, что для этого придётся обернуть функцию в функцию, чтобы у тебя была функция с локальными переменными, которые будут глобальными для этой функции в функции.
    Ответ написан
    13 комментариев
  • Как решать задачу используя динамическое программирование?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Какой-то идиот задачу составлял.
    Во-первых, для N<60 ответ помещается в 64-битный целочисленный тип, который есть сейчас практически во всех языках программирования. Тут не надо ничего придумывать для избегания переполнения.
    Во-вторых, чтобы избежать переполнения, в таких задачах обычно просят выдать ответ по какому-то большому модулю. И последнее, как ответ может получиться нецелым - это просто загадка. Пример решения явно неверен.

    А так, динамическое программирование тут простое: Пусть F(N,K) - сколько существует невзрывоопасных стопок длины N, таких что в конце есть ровно K опасных контейнеров (очевидно, 0 <= K < 4). Это не совсем прям то, что вам нужно в задаче, но количество опасных стопок - это количество всех стопок (2^N) минус количество невзрывоопасных, поэтому это ДП нам подходит.

    Пересчет очень прост:

    F(N,K>0) = F(N-K,0)
    F(N,0) = F(N-1,0)+F(N-1,1)+F(N-1,2)+F(N-1,3)


    Если на конце K плохих контейнеров, то до этого точно должен быть хороший контейнер. Если на конце стоит хороший контейнер - то до него может быть 0..3 плохих контейнера.

    База: F(0,0) = 1, F(0, K>0) = 0

    Ответ: 2^N - F(N,0)-F(N,1)-F(N,2)-F(N,3)
    Ответ написан
    2 комментария
  • Как с помощью js запрещать доступ к странице?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Непонятно, в чём проблема.
    При активации подписки в БД заносим время завершения подписки, например `subscriptionEndTime` = NOW() + INTERVAL 30 DAY.
    При проверке просто сравниваем текущее время и сохранённое,
    `subscriptionEndTime` > NOW() AS `isSubscriptionActive`
    .
    А попытка переложить проверку на клиента заведомо неправильная. Никто не мешает пользователю слегка поправить код и просто игнорировать проверку.
    Ответ написан
    Комментировать
  • Как игнорировать предпочтительный язык системы, браузера при запросе API?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    RTFM.
    https://nominatim.org/release-docs/develop/api/Reverse/
    Language of results
    accept-language=<browser language string>
    Preferred language order for showing search results, overrides the value specified in the "Accept-Language" HTTP header. Either use a standard RFC2616 accept-language string or a simple comma-separated list of language codes.
    Ответ написан
    Комментировать
  • Лучший клиент git ( unity )?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Лучший клиент git
    Лучший клиент git - это консольный.

    Лучший клиент git - это дело вкуса каждого. Нравится вам TortoiseGit, так используйте его. Не нравится - ищите что-то лучшее.

    А что имеете в виду
    но есть что-нибудь лучше?
    Ответ написан
    Комментировать
  • В чем тут подвох?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Да, это давно всем известный развод лохов (лично я знаю про него уже лет 20).
    Вас таких жертв называют "дрОпами" в этой схеме.
    Ты даёшь в пользование свой комп и с него совершаются преступные действия.
    За которые будешь нести ответственность лично ты.
    Там возможно всё - наёмничество, детское порно, продажа наркотиков, заказные убийства, торговля девушками, детскими внутренними органами и прочее.
    Первое, что ты должен сделать - не спускать всё на тормозах, а написать заявление в полицию об этом
    Ответ написан
  • Как проксировать веб сокет?

    @q2digger
    никого не трогаю, починяю примус
    Для начала покажите код из конфига nginx относящийся к location который вы пробрасывали.

    Дока на сайте nginx - https://www.nginx.com/blog/websocket-nginx/
    Ответ написан
    Комментировать
  • Какой язык программирования наиболее универсален?

    insighter
    @insighter
    -First time? - Huh? (C#, React, JS)
    Самое забавное то, что можно выучиться хорошо программировать на десятке топ языков сразу. Но невозможно стать настоящим спецом и возьмем на том же C# уметь и в бэкенд и в игры и в десктоп и мобилки и ещё фронтенд (на blazor который).

    А язык это просто. На все языки три парадигмы программирования.
    Ответ написан
    Комментировать
  • Какой язык программирования наиболее универсален?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Однозначно Delphi! Без вариантов!

    P.S.
    Ну а если серьезно: это компилируемый язык, собирается под все основные платформы (Windows, Linux, MacOS, Android, iOS). Его вариации собираются под почти все существующие платформы Nintendo DS, GB, HAIKU, Raspberry и прочие платформы для мини пк (UNIX-подобные, DOS, OS/2, Novell Netware, AmigaOS, AmigaOS 4, AROS, MorphOS, Arduino (Visuino) ...).
    Создает нативный код, позволяет писать низкоуровневые вещи (например, драйвера для винды), легко работает с нагруженными частями, позволяет даже писать для фронта сайтов через интерпретатор в JS. Т.е. можно написать полностью весь веб-сервис исключительно на нём, включая сервер, бэкенд, фронт. Сам язык мультипарадигменный. Т.е. можно использовать как ООП, так и ФП. Нет принудительного сборщика мусора. Памятью можно управлять самостоятельно. Но, можно использовать механизмы подсчета ссылок и не заботится о ручном освобождении. Язык используется и для десктопа и для мобилок. Для майнинга или машинного обучения. Для создания игр и утилит. Для крупного коммерческого и внутреннего софта.
    Язык удобен и для скриптинга (есть инлайн объявление, анонимные функции, вывод типов, дженерики). Нет нагромождения примитивными типами. Строки всегда строки, их можно модифицировать без переаллокации.
    Есть кроссплатформенный фреймворк для создания графический приложений (с графикой на GPU и возможностями сравнимыми с CSS стилизацией). Сам фреймворк чрезвычайно удобный и гибкий. И нет необходимости писать всё и вся кодом.
    Ответ написан
    3 комментария