Задать вопрос
  • Существует ли какое нибудь api, которое позволяет вытаскивать данные с "умных" часов/браслетов ежесекундно?

    @rPman
    https://developers.google.com/fit/android в т.ч. прямое чтение сенсоров в реальном времени
    ну и само устройство должно поддерживать

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

    saboteur_kiev
    @saboteur_kiev
    software engineer
    любой, который устроит лично тебя по бюджету, клавиатуре и монитору.
    Ответ написан
    2 комментария
  • Как определить что запрос к api пришел с клиента?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Отдавая фронт, сервер может установить в нём уникальное значение ключа, и требовать именно это же значение в запросах к api. Скажем, в HTTP-заголовках запроса. Если нет ключа – запрос отклонять.

    Значение это может быть привязано ко времени и считаться действительным только в течение часа, например.

    Но и это никак не защищает от того, что получив код фронта, «злодей» не станет выполнять запросы с этим ключом из своих скриптов. Уточните вашу задачу, чего хочется добиться.

    Авторизация пользователя — этот вариант вполне. Чел логинится на бэке и получает уникальный временный ключ, ассоциированный с его аккаунтом.

    Ограничение по частоте запросов к API тоже с ключом решается.
    Ответ написан
    2 комментария
  • Почему int при делении int на int с остатком?

    Это не деление с остатком, это целочисленное деление.
    Если делишь одно целое число на другое целое число, работает целочисленная арифметика, потому что го это строго статически типизированный язык.
    Чтобы получить дробное число, нужно явно делить одно число с плавающей точкой на другое.
    package main
    
    import "fmt"
    
    func main() {
    	var some = float64(5) / float64(3)
    	fmt.Println(some)
    	fmt.Printf("%T", some)
    }


    Происходит это потому что компьютер так работает на уровне железа. Если процессору дать команду на деление двух целых, ответом будет целое. Если дать команду на деление двух флоатов — будет флоат.
    В некоторых языках компилятор или интерпретатор берут на себя смелость решать за пользователя, какой ему тип нужен и автоматически включают нужный тип деления в зависимости от ситуации (обычно включается флоат на флоат, как в JS, например). Но это может приводить к ошибкам в некоторых ситуациях.
    Поэтому в го, C, C++ и еще многих других языках (обычно это статически типизированные языки), пользователь должен явно выбирать требуемый тип деления, используя нужные типы переменных.
    Ответ написан
    1 комментарий
  • Почему при указании типа аргмента в сигнатуре метода python3 все равно разрешает передавать другие типы?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Потому что в Python нет статической типизации, а строгая тут вообще не при чём. Аннотации типов для интерпретатора не больше, чем комментарии.
    Ответ написан
    Комментировать
  • Как определить что запрос к api пришел с клиента?

    EreminD
    @EreminD
    Кое-что умею
    да никак.
    вы хотите убедиться, что запрос пришел с конкретного девайса или с конкретного типа устройства (мобилка, веб, часы)?

    • Существует заголовок User-Agent (https://developer.mozilla.org/en-US/docs/Web/HTTP/...). В нем содержится инфа об ОС и браузере, с которого пришел запрос
    • Вы можете прокидывать какой-то свой специальный заголовок в запросах. Например сделать заголовок client-device-name и передавать какое-то спец.имя
    • Вы можете гененрить на стороне бэка какой-нибудь токен и передвать его в ответе, в куках. Потом, при следующем запросе, проверять наличие этого токена


    И да, все эти варианты можно имитировать в Postman или просто cURL. Так что методов нет
    Ответ написан
    3 комментария
  • Статическая типизация на питоне, почему не работает?

    Mi11er
    @Mi11er
    A human...
    Потому что это type hitting, просто подсказка и питон, просто вам скажет в IDE , что функция ожидает один тип, а вы передали другой.
    Все же Python - язык динамический.
    Хотите строго, Go \ c# \ Java
    Ответ написан
  • Почему появляются не известные торренты в истории загрузок iknowwhatyoudownload.com?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ты, конечно, сделай
    искать уязвимости в локальной сети

    а то начинаешь будто твой комп, а в конце уже и локальная сеть с nginx есть

    но

    в целом надо бы понимать, в 2022-то году, что IP Ipv4 на всех не хватает, и провадейр их ДЕЛИТ между абонентами
    и делит не в последовательном (один отключился второй подключился - какие нах откл/подкл если давно уже не Диалап а постоянный Ethernet, адрес занят постоянно), а в параллельном режиме (гугл Cisco виртуальные IP например)

    это самоочевидно, зная что у некоторых провайдеров, условно, 256*4 адресов всего (есть же списки кому что выделено), а абонентов минимум тысяч пять

    отсюда же требование привязки МАС роутера к абоненту

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

    bingo347
    @bingo347
    Crazy on performance...
    let a = [1, 2];
    let b = [3, 4];
    for (a, b) in a.into_iter().zip(b.into_iter()) {
        println!("{a}, {b}");
    }

    Метод zip есть у любого объекта реализующего трэйт итератора
    https://doc.rust-lang.org/std/iter/trait.Iterator....
    Ответ написан
    Комментировать
  • Как изменять знечение в json файле на рандомное число?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Прочитать файл
    2. Распарсить файл из JSON в объект
    3. Изменить нужное свойство
    4. Сериализовать результат в JSON
    5. Сохранить файл
    6. Запустить требуемое приложение в цикле требуемое число раз
    Ответ написан
    Комментировать
  • Какую книгу выбрать для изучения паттернов проектирования?

    Compolomus
    @Compolomus
    Комполом-быдлокодер
    по патернам сейчас посоветуют одну книгу, но я бы не стал ее читать, может начаться такое, что будете лепить код ради паттернов, переходить стоит, когда явно видится, что паттерн идеально заходит. на самом деле писать более менее код, хватит и SOLID, опять же без фанатизма
    начните с https://refactoring.guru/ru (у меня с впн ток открывается)
    Ответ написан
    1 комментарий
  • Что делать если на комп попал вирус, можно ли как-то решить проблему без переустановки системы?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно, но сложно.
    С переустановкой проще и гарантированный результат.
    Ответ написан
    Комментировать
  • Как хранить настройки пользователя в django?

    lxstvayne
    @lxstvayne
    Люблю Python
    Тут дело выбора, посмотри бенчмарки, какая бд быстрее читает по строкам и обновляет запись, ту и бери. Просто json будет недостаточно, в монге индексация есть поэтому побыстрее будет.
    Ответ написан
    Комментировать
  • Как правильно нумеровать версии программы?

    GavriKos
    @GavriKos
    Микропетпроджект - домашнее облако homeCloud
    Правил куча, единого стандарта нет.
    Ответ написан
    Комментировать
  • Почему современные языки отказываются от ООП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Они не отказываются. Скорее происходит отказ от "парадигмы" разработки. Языки стали мульти-парадигменные. Посмотрите на С++20 или Scala. Их невозможно положить в коробочку ООП или ФП. В них есть почти полный набор фич и оттуда и отсюда. И с каждым годом число фич растет и граница размывается. Нашим потомкам будет вообще непонятно где идет раздел.

    По поводу golang. Это язык ограниченной разработки. Его создавали специально чтобы порог вхождения был низкий. Фактически делали лайтовый С++ которому можно обучить школьника за 14 дней. Но с перформансом выше чем у Питона. Поэтому выражать какие-то сложные конструкции на типах там скорее всего не получится. У golang есть свой манифест. Я забыл как он называется и где он. Вобщем там довольно четко обоснованно почему такие принципы и почему такая идеология.
    Ответ написан
    1 комментарий
  • Код почему то запускаеться 5 раз хотя такого не должно быть в чем может быть проблема?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Потому что из базы вернулось 5 строк.
    Ответ написан
    1 комментарий
  • Код почему то запускаеться 5 раз хотя такого не должно быть в чем может быть проблема?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    А что вас удивляет? Все работает как написано.
    SQL-запрос вернул 5 записей, вы перебираете их циклом, в котором при первом проходе выполняется некий код с инвентарем, а на остальных четырех проходах i=1 и срабатывает негативная ветка, где печатается символ нуля.
    Судя по тому, как вы неправильно пользуетесь шаблонной строкой и какой вопрос задаете, вы далеки от программирования. Надо подучиться питну и основам алгоритмизации.
    А еще так подставлять параметры в запрос опасно, нужно передавать их отдельно в execute.
    Ответ написан
    1 комментарий
  • Параллельные запрос как уязвимость?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Эта проблема к браузерам не имеет никакого отношения. Это можно рассмотреть как несогласованность транзакций при работе с балансом пользователя. Если развивать идею то так можно и 2 кредита взять.
    Воспроизвести ее можно и без бразуеров.

    Вобщем если 2 потока работают с одной разделяемой volatile переменной баланса то возможна ситуация когда проверка баланса и его обновление выполняются в различных потоках что приводит к ошибке списания средств. 100% новичков попадают в эту ловушку просто не зная что мультипоточка - коварна и может прервать выполнение вашего треда в любую милисекунду и передать управление другому потоку в этом же коде.

    Гипотетический код на несуществующем языке который делает блокирование баланса перед проверкой.
    boolean withdraw(account : Long, amount : Decimal) : boolean = {
      with(account.lock()) {
        if (account.balance >= amount) {
          account = account - amount;
          return true;  
        } else {
          return false;
        }
      }
    }

    И код на SQL (ближе к Oracle-диалекту).

    SELECT amount FROM accounts WHERE accountID = :accountId FOR UPDATE;
    
    UPDATE ... 
    
    COMMIT ...;
    Ответ написан
    Комментировать
  • Можно ли считать тег SQL бесполезным?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Нельзя. Если вопрос в рамках стандарта SQL и не затрагивает специфику конкретной СУБД, то куда его пихать?
    Ответ написан
    4 комментария
  • Как обеспечить консистентность данных между БД и поисковым движком?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В любой информационной системе я-бы выделял single-source-of-truth (типа главный источник правды) и этот главный источник должен быть согласован сам с собой всегда. Будет ли это дисковый файл. Kafka, или база PG - неважно. Важно что он будет арбитром в спорных ситуациях.

    В ситуации с потерей электричества что вы описали - совершенно невозможно правильно восстановить обе системы. Одна из ник полюбому будет опережать другую. В high-load системах она будет опережать не на 1 на на сотню транзакций например. Честно я даже не могу придумать алгоритм восстановления. Особенно если часы где-то разошлись на милисекунду и одна из систем сделала update на уже вставленные данные.

    Мне нравится вариант когда мы сразу пишем информацию в Postgres и делаем commit (по правилам которые нужны бизнесу) и дальше уже индексируем содержимое базы эластиком. После аварийного ребута я будут знать что PG содержит именно то что было закоммичено. То что нужно тоесть. Эластик будет просто догонять.
    Ответ написан
    Комментировать