Задать вопрос
  • В чём я ошибаюсь по поводу сеттеров js?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Присваивание this.damage вызывает сеттер, в котором находится присваивание и так до бесконечности.
    Свойства класса должны отличаться по имени от сеттеров.
    Ответ написан
    Комментировать
  • Как искать библиотеки и документацию к ним?

    GavriKos
    @GavriKos
    Микропетпроджект - домашнее облако homeCloud
    Гугл использую. А еще - не ищу библиотеки, а ищу "как сделать такой то функционал" - и уже там будет либо код, либо библиотека. Где сама библиотека лежит глубоко все равно.
    Ответ написан
    Комментировать
  • Можно ли придумать новый математический инструмент для решения задачи трёх тел?

    hint000
    @hint000
    у админа три руки
    как раз "новые инструменты" и использует для решения нерешенных задач
    Здесь другое. Задача трёх тел не относится к нерешённым математическим проблемам. https://ru.wikipedia.org/wiki/Открытые_математичес...
    С этой задачей математикам всё ясно. Примерно как с задачей квадратуры круга. Типа: придумать новый математический инструмент для вычисления (наконец-то) всех цифр числа Пи. :) Вот и невозможность аналитического решения в общем случае задачи трёх тел - вполне доказанный математически факт. Никакие новые методы не отменяют старых доказательств. В этом принципиальное отличие математики от естественных наук.
    Брунс и Пуанкаре доказали, что систему дифференциальных уравнений для движения трёх тел невозможно свести к интегрируемой. https://ru.wikipedia.org/wiki/Задача_трёх_тел
    Но численные методы - это раздел математики. Решение численными методами (приближённое) - теоретически возможно. Практически - крайне затруднительно.
    К несчастью, как показал Д. Белорицкий, по крайней мере в случае Лагранжа для нужд вычислительной астрономии в сходящихся рядах Зундмана нужно брать как минимум 10^(8*10^6) членов. https://ru.wikipedia.org/wiki/Задача_трёх_тел
    Вот здесь - в численных методах - и остаётся возможность "придумать новый математический инструмент". Здесь никто не запрещает. Повторю: даже при открытии такого инструмента (а это стало бы важным открытием) он будет давать лишь приближённое решение.
    И ещё раз повторю: невозможность получения точного решения - доказана и неоспорима.
    Ответ написан
    6 комментариев
  • Стоит ли разработчикам платить за баги?

    Wacdis
    @Wacdis
    PHP, Python, GO, Rust, NodeJS, SOA/MSA
    Если вы под "багом" подразумеваете то, что четко описано в ТЗ и не выполнено, то нет, платить не должны. Но если вы подразумеваете под "багом" что-то вроде "так это же очевидно, что оно должно так работать", но не описали в ТЗ, то да! Это будет не баг со стороны программиста, а баг со стороны вас, как ПМ-а. Ибо, что не сказано, то есть ложь! Если вы не удосужились описать четкий функционал, что должно вводится, что должно получиться на выходе, как это должно работать, то не ждите "очевидных" для вас решений, так как все, что очевидно для вас, не очевидно для других.
    Ответ написан
    Комментировать
  • Стоит ли разработчикам платить за баги?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Не платите. Тогда все разработчики просто уйдут туда, где платят. А вы останетесь изучать теорию, объясняющую почему и как появляются баги, пока не осознаете их неизбежность.
    Ответ написан
    1 комментарий
  • Стоит ли разработчикам платить за баги?

    @aleks-th
    У меня примерно так:
    1. Если задание выполнено строго по ТЗ и принято - любой вновь найденый баг - это уже новая работа которая должна быть оплачена.
    2. Если задание не выполнено по ТЗ и баги при приемке не принимать - то это ошибка разработчика, пусть исправит.
    ---
    3. ТЗ должно быть составлено так чтобы не могло быть двойного трактования - если ТЗ позволяет трактовать задачу размыто и компания может предполагать одно, а исполнитель другое - ошибка того кто дал это задание разработчику - соответственно это не проблема разработчика, он не знает что у вас в голове и работа по переделке будет оплачена.
    ---

    А вообще никаких общих правил не существует - как договоритесь так и будет.
    Ответ написан
    Комментировать
  • Стоит ли разработчикам платить за баги?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Разработчику оплачивается время работы.
    Если он работает в определённое время, то оно должно быть оплачено.
    Задача, выполняемая разработчиком, может быть принята, либо не принята. Если не принята, то она не оплачивается.
    Процесс принятия работы - это отдельная тема.
    Всё это прописывается в трудовом договоре, детки.
    Ответ написан
    1 комментарий
  • Как запустить двоичный файл на FASM (ассемблере)?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Отлично, теперь вам надо написать загрузчик бинарников для вашей ОС
    Ответ написан
    2 комментария
  • Как сделать выносную кнопку включения пк из переключателя от механической клавиатуры?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вообще я механический свитч от клавиатуры в руках никогда не держал, но на всех картинках в инете они нормально-размокнутыми показаны. Вот, например: https://habr.com/ru/post/140454/
    Это значит что кнпку включения можно напрямую заменить. Почему нет?
    Но если надо именно инвертировать сигнал, то можно воспользоваться транзистором и резистором. .Можно взять полевой транзистор любой почти и притянуть ему базу к нулю через кнопку. И через резистор в несколько килоом к пдюсу постоянного питания. А цепь сток-исток включить вместо штатной кнопки (только полярность не перепутать).
    Тогда размыкание притяжки к нулю приведет к открытию транзистора и включению компа.
    Ответ написан
    Комментировать
  • Как исправить ошибку 403 при использование Httpclient на сервере?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Никак, это защита от таких вот ушлых.
    Ответ написан
    7 комментариев
  • Как через Python код передать данные в консольную .exe программу?

    NeiroNx
    @NeiroNx
    Программист
    Если программа реально консольная а не собственное текстовое окно стилизованное под консоль.
    stdin - передача в программу
    stdout - получение из программы
    from subprocess import Popen, PIPE, STDOUT
    
    p = Popen(['passwd', 'root'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)    
    out = p.communicate(input=b'MyPass111\nMyPass111\n')[0]
    print(out.decode())
    Ответ написан
    Комментировать
  • Как в данном случае работает наследование?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    То, что написано в целом - это самый настоящий говнокод. Класс A не является самостоятельным и при попытке сделать его экземпляр и вызвать A->method() программист получит ошибку в любом случае. Так делать нельзя, независимо от логического обоснования того, что здесь происходит.

    А явление, которое вы наблюдаете называется умными словами позднее статическое связывание (3 пример). Почитать кучу текста всё-таки придётся, этот нюанс в двух словах не объяснить, что вы хотели?
    Ответ написан
    2 комментария
  • Как округлить тысячные?

    Если число больше тысячи, то делим его на тысячу, либо сотни и приписываем к строке " тыс.".
    Если чисто больше миллиона, то делим его на миллион и получаем цифру 1 и приписываем к ней " млн.".

    Думаю логика понятна, пишите её сами. Ведь вы хотите чему то научится, а не чтобы за вас делали работу.

    UPD!
    По случайности мне пришлось написать аналогичное, мне необходимо было округлять большие суммы в тысячи, миллионы и т.д. Я решил, что будет полезно поделится этим с вами.

    Написал небольшую функцию, выглядит следующим образом:
    function num(number) {
        function number_format(number, decimals, dec_point, thousands_sep) {
            number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
            let n = !isFinite(+number) ? 0 : +number,
                prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
                sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
                dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
                s = '',
                toFixedFix = function (n, prec) {
                    let k = Math.pow(10, prec);
                    return '' + Math.round(n * k) / k;
                };
    
            s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
            if (s[0].length > 3) {
                s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
            }
            
            if ((s[1] || '').length < prec) {
                s[1] = s[1] || '';
                s[1] += new Array(prec - s[1].length + 1).join('0');
            }
            
            return s.join(dec);
        }
    
        if (number <= 9999 && number >= -9999)  {
            return number_format(number, 0, '.', '');
        } else if(number <= 999999 && number >= -999999){
            return number_format(number/1e3, 2, '.', '') + ' тыс. ';
        } else if(number <= 999999999 && number >= -999999999){
            return number_format(number/1e6, 2, '.', '') + ' млн. ';
        } else {
            return number_format(number/1e9, 2, '.', '') + ' млрд.';
        }
    }


    Вызывается соответственно `num(integral/float)`
    Ответ написан
    1 комментарий
  • Где можно скачать точные IP диапазоны?

    @rPman
    не уверен что будут и свежие и точные и бесплатные (выбери только два из трех, ка бы не одно)
    (порядок и сам список случайный, я просто гуглить умею)
    https://www.maxmind.com/en/geoip2-databases
    https://db-ip.com/db/ip-to-location-isp
    https://datarade.ai/data-categories/ip-to-geolocat...
    ...
    почему ты забраковал?
    https://www.ip2location.com/database/db4-ip-countr...

    это даст понимание стоимости требования 'свежие'
    p.s. точно помню у maxmind был какой то фриварный вариант базы, с ограничениями на использование
    Ответ написан
    1 комментарий
  • Как создать язык программирования?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Как создать свой язык программирования?

    Точно так же, как и любую другую программу: сначала спроектировать, а потом реализовать.

    Без другого языка программирования! Полностью с нуля.

    В самом низу находится машинный код. Выглядит примерно вот так:
    08 04 83 fa 08 04 83 fb 08 04 83 fd 08 04 84 00
    У каждого процессора есть свой набор инструкций, которые кодируются машинным кодом. Открываем справочник и пишем нужный код для нужной ОС/железа. Ничего сложного, правда же? =)

    Ведь как-то создали первый ЯП.

    Достаточно почитать историю появления первых ЭВМ. Они представляли из себя набор переключателей отдельных битов, которые позже эволюционировали в перфокарты, которые в свою очередь представляли из себя прообраз современных исполняемых файлов. С увеличением количества доступных команд, усложнением техники и появлением накопителей программы так же становились все сложнее и сложнее: поэтому решили упростить запись и придумали первый ассемблер. Дальнейшее развитие привело к появлению первого ЯП высокого уровня и далее более высокие уровни абстракции, используя которые сегодня пишутся все программы.

    Так что в вашем случае вам надо пройти весь этот путь самостоятельно. Примерно так:
    1. На машинном коде реализовать минимальный ассемблер
    2. Используя свой минимальный ассемблер реализовать простейший компилятор этого ассемблера
    3. Расширить компилятор ассемблера до стандартного набора инструкций
    4. На ассемблере реализовать транслятор и компилятор ЯП высокого уровня
    5. Реализовать необходимый набор инструкций для написания компилятора этого же ЯП
    6. Написать этот самый компилятор своего ЯП на нём же и далее уже скомпилировать первую самостоятельную версию своего ЯП без использования других ЯП
    Ответ написан
    3 комментария
  • Как создать язык программирования?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    практически все ЯП написаны на с.
    Даже gcc компилируется сначала на старой версии и создается бутстрап, а потом он компилирует новые фичи.

    Хотите сложностей? Создайте бутстрап на ассемблере, который соберет компилятор вашего языка или бутстрап для дальнейшей сборки.
    Вот кстати пример https://habr.com/ru/post/133780/
    Ответ написан
  • Error: unmappable character for encoding Cp1251 как исправить?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    У тебя где-то идет преобразование из Unicode символов в символы кодировки cp1251 (только латиница и кириллица) и если попадается символ который ни то и не другое - то кодировщик не может его преобразовать. Решение - найти в конфигурации где у тебя идет использование cp1251 и заменить его на utf-8 или utf-16.
    Ответ написан
    Комментировать
  • Словарь или БД?

    Vindicar
    @Vindicar
    RTFM!
    Есть целый ряд вопросов.
    1.
    Скрипт делает большое количество запросов к различным апи

    Что-то мне подсказывает, что затык скорее будет тут, а не на записи. Ты делал замеры производительности и убедился, что bottleneck именно на сохранении данных?
    2. И да, вопрос персистентности принципиален. Наскоько страшно потерять набранные данные?
    3. А у тебя в оперативку данные влезут? Ты же понимаешь, что по исчерпании оперативки система начнёт свопиться, и вся производительность пойдёт коту под хвост? Вообще, если данные влезают в оперативку, это не такой уж большой объём для ввода/вывода.

    Попробуй сначала сбрасывать в БД напрямую. Простое решение часто оказывается достаточным. Я очень подозреваю, что так и будет.

    Если скорости всё же будет не хватать - клади в очередь в ОЗУ, параллельно перекидывай в БД. Если у тебя io-bound задача, то лучше писать асинхронный код, и использовать асинхронную же обёртку вокруг БД. Тогда у тебя хотя бы очередь будет расти медленнее

    Если и это не поможет - посмотри, можно ли писать данные блоками фиксированного размера в какой-нибудь бинарный файл. Если там будет минимум преобразований типов (например, число-строка), скорость должна быть приемлемая. Этот файл может читать отдельный процесс, и уже преобразовывать и сохранять в приемлемом виде. Но я бы не советовал так извращаться.
    Ответ написан
    2 комментария
  • Могу ли я размещать авторские материалы на своем сайте?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    которые можно свободно скачать.

    То, что можно свободно скачать - не означает, что можно делать все, что угодно. У сайта может быть договор с каждый отдельным автором - причем с каждым он может быть разным.
    Вот я например такой копирайт ставлю:

    Данное произведение распространяется исключительно для персонального использования.
    Запрещается:
    - Любое использование текста в целом, его отдельных частей, сюжета,
    названия, имен героев с целью извлечения выгоды способами, включающими (но не ограниченными данным списком) распространение, тиражирование, копирование, воспроизведение в том числе вручную без заключения отдельного соглашения с Автором.
    
    - Любое, в том числе и бесплатное, распространение текста произведения полностью или частично, объединенное с материалами, выражающими критическое отношение к Автору или тексту произведения.


    Вам лучше всего связаться с администрацией того сайта и уточнить детали договора с авторами.
    Ответ написан
    2 комментария