• Как произвести сортировку в таблице SQLite3, после удаления записи?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Все базы данных хранят строки не так как Excel. Хранят как предписано в файловом
    формате для целевой DBMS. Когда удаляешь - обычно
    остаются дырки которые потом заполняются другими строками. Но это я упрощенно рассказываю.
    В реальности все еще сложнее. И есть процессы вакуума или другой релокации строк. И таблица
    может двигаться в памяти. Шаффлиться. Делиться на части. Кластеризоваться и т.п.

    Поэтому твоя хотелка достигается только с использованием order by.

    Все остальные способы не работают потому что язык SQL не дает никаких гарантий относительно
    физического упорядочивания строк.

    UPD: Для авто-нумерации https://stackoverflow.com/questions/16847574/how-t...
    Ответ написан
    Комментировать
  • Как взять интеграл в уме?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Зубри формулы дифференцирования. Интегрирование - это обратный процесс по отношению к Д.
    И без этой зубрежки ты все равно никуда не сдвинешся.

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

    А в реальном мире очень редко когда можно найти интеграл от произвольной функции. Скорее всего.. 99%
    что нельзя.
    Ответ написан
    Комментировать
  • Как реализовать передачу данных между компьютером и сервером?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Насколько я знаю, она может отправлять данные не только по локальной сети, но для этого у компьютера должен быть так называемый 'белый' ip, но я не знаю будет ли у пользователя он.

    Для большинства обычных пользователей-обывателей интернета которые сидят в телефонах, домашних проводных интернетах, кафешках с wifi, невозможно зафиксировать постоянный IP. Он у них меняется либо раз в сутки либо по сеансу.

    Но если IP сервера известен то пользователь может периодически сам ходить на сервер и спрашивать "не пришло-ли чего нового". Это меняет роли для передачи данных. И это создает некую холостую нагрузку. В течение суток пользователи могут создать нехилый трафик такими пробами.

    Задача неизвестного IP:port частично решена в торрент-протоколах. Там пользователи "отмечаются" раз в несколько минут по трекерной ссылке и таким образом трекер владеет информацией о свежих парах IP:port которые присуствуют в сети. Вот. Эта схема тоже рабочая. Но нужен вот еще один сервис для трекинга.
    Ответ написан
    Комментировать
  • Можно ли запустить программу на языке C в операционной системе FreeDOS или MSDOS?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я думаю можно. Поищи такие компилляторы как Watcom C, Borland C.
    Они умеют генерить код для DOS. На ваткоме кажется была написана
    игра Doom for DOS.

    UPD +Линка www.openwatcom.org
    Ответ написан
    Комментировать
  • Как хранить большое количество json в mysql?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Когда обсуждают базу данных - то ее физический размер обычно не имеет значения. Она может быть и терабайт и пета-байт. Но важно подумать о том какие виды запросов вы будете там гонять. И какие индексы надо построить чтобы быстро искать нужный JSON.

    Хорошая коробочная поддержка JSON с индексами и бинарным представлением документа есть в Postgresql.
    Про MySQL я не в курсе. Но вот посмотрите эту статью https://habr.com/ru/companies/skillfactory/article...
    Может быть появятся мысли.

    Ваш вопрос требует создания POC + Benchmark. Безотносительно того что вам тут напишут в ответах - ваша
    задача создать прототип и загрузить туда 100К синтетических записей и понаблюдать как быстро MySQL будет
    делать поиск нужных значений.
    Ответ написан
    2 комментария
  • MySQL on duplicate key update. Как избавиться от увеличения ID?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дырки могут быть связаны с механикой кеширования sequence для каждого сеанса mysql.
    По сути если 10 сеансов хотят быстро и без конкуренции вставлять в таблицу то они должны
    прочитать пачку номеров. Например первый сеанс с 1 по 10 и второй с 11 по 20 и так далее.
    В разных БД это реализовано по разному но это в целом - механика оптимизации скорости.
    И если сеанс закрылся и недочитал 7, 8, 9 номер то и хер с ним. Диапазон уже был использован
    как туалетная бумага.

    У тебя-же нет желания доставать из ведра грязную бумагу и еще раз ее использовать?
    Ответ написан
    Комментировать
  • Бот не вносит данные в таблицу sqlite, в чем может быть ошибка?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Эти два запроса - какая-то безсмыслица.

    SELECT Town FROM users WHERE user_id = (?)

    UPDATE users SET 'Town' = (?)

    Автор ты можешь прокомментировать словами что здесь происходит. Мне кажется что после обсуждения
    у тебя должны возникнуть другие вопросы.
    Ответ написан
    Комментировать
  • Как оставить java.util.date в gmt0?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Для java11 имеет смысл отказаться от использования java.util.date в пользу java.time.LocalDate, java.time.ZonedDateTime. И использовать API из time для переводов локальных времен.
    Ответ написан
    Комментировать
  • Как следить за изменением авторизации пользователя?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На протяжении 20 лет я наблюдаю за базами данных и механизмами стриминга событий, слежениями
    и прочее. Так вот. Это все НЕ РАБОТАЕТ. Не работает по причине идеологии ACID. Вы не можете операцию
    DML считать основанием для генерации события. Потому что DML это не транзакция. Если мы фиксируем
    DML commit/rollback операцией - то при этом неочевидно что должна видеть стриминговая платформа.

    Она не может откатывать события в обратную сторону. Такой механизм технически дорог. Поэтому
    основанием для стриминга событий может быть только событие внутри приложения. PHP, Node, Java e.t.c.
    вот там и генерируйте события.

    А база данных здесь вообще не помошник. Сканировать таблицу по скедулеру тоже не надо. Это дорого
    и не реал-тайм.
    Ответ написан
    Комментировать
  • Почему возникает django.db.utils.OperationalError: consuming input failed: Operation timed out?

    mayton2019
    @mayton2019
    Bigdata Engineer
    --prefix, менял postgresql.conf и pg_hba.conf только чтобы слушал во вне

    А попробуй тоже самое собрать но без этих изменений.
    Ответ написан
  • Как спарсить whatsapp web?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Почитай сначала раздел developers. Возможно там надо зарегистрироваться и просто взять готовый API
    и пользоваться.
    Ответ написан
    Комментировать
  • Как ускорить count в mongoose?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если пролистать до старых страниц, допустим до 5000 страницы, то это происходит очень долго(примерно 10 секунд, даже с индексацией)


    Это нормально. 5000 за 10 секунд - это 500 страниц в секунду. Ни один человек так быстро читать не умеет.
    Если пользователь давит pagedown - то наверное он что-то не так делает. Дай ему опцию goto номер
    страницы.

    Count работает супер медленно, если брать загрузку самых свежих страниц, без него они загружаются за 15мс, но при использовании count (даже при условии того, что кол-во страниц ограниченно 5000, больше не нужно), задержка увеличивается до 3-5 секунд


    Это нормально. Ни в одной БД count не работает достаточно быстро чтобы показывать реал-тайм.
    Вообще если вспомнишь что базы бывают ACID то они считают не актуальное состояние таблицы
    а "срез таблицы в прошлом" на момент начала тразнакции подсчета.

    Запоминай последнее значение count в переменную и транслируй пользователю внизу странички
    как актуальное но в прошлом. Например 15 минут назад.
    Ответ написан
    Комментировать
  • - Спроектировать локальную базу данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно для игровой логики реляционные БД не нужны. Бери любой Key-Value и там тебе достаточно
    возможностей чтоб хранить паззлы. С некоторым допущением обычная файловая система
    может быть простой БД. Ключ - имя файла и value - тело файла.
    Ответ написан
  • Как исправить ошибку в телеграмм-боте, который должен переводить текст?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ничего они не конфликтуют. У тебя ошибка 401. Description: Unauthorized. Не авторизован.
    Сделай несколько шагов назад до того момента когда телеграм еще работал и добавляй
    переводчика шаг-за шагом.
    Ответ написан
    Комментировать
  • Как элегантнее переопределить реализацию одного из методов интерфейса для отдельно взятого объекта?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Я не понимаю что такое - "элегантно" в инженерном представлении. Это - ходить в смокинге с моноклем?
    В цилиндре с сигарой?

    Дружище Zolg. То что ты хочешь - противоречит принципам ООП. Если ты хочешь динамически
    передавать логику - то создай новый интерфейс который принимает лямбды и это и будет коробочным
    решением вопроса.
    Ответ написан
    Комментировать
  • Как сделать, чтобы сайт во время парсинга не думал, что я бот?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поскольку алгоритм Озона не документирован - то мы можем только гадать.

    Сделай дамп сетевого трафика для случая с браузером и с ботом.
    Потом открывай в режиме split screen и сличай глазами. Где-то будет ключевая разница.
    Ответ написан
    Комментировать
  • Есть ли способ запретить доступ админу к внутренним (internal), приватным (private) проектам либо групам?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В обстановке такого недоверия разрабатывать просто невозможно. Смените админа и хостинг.
    Админ должен быть частью вашей команды. Он должен есть с вами из одной тарелки и получать
    бонусы и премиии за успехи на проекте.
    Ответ написан
    Комментировать
  • Как в typeorm сделать id уникальным из 12 цифр?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В базах данных для обеспечения уникальности используются sequence.

    UUID возникает в распределенных системах где нет координации между нодами кластера но
    нужно хоть каким-то образом получить уникальность. Плюс там еще есть 4 типа этих UUID
    или 4 разных алгоритма как они получаются.

    Все это пока к безопасносни не имеет никакого отношения. Это просто продиктовано физической
    архитектурой (1 база или кластер).

    Вопрос безопасности нужно обсудить отдельно просто исходя из сценария угрозы. А пока сценария
    нету - вот просто нечего тут больше обсудить.
    Ответ написан
  • Можно ли использовать несколько сетей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне нужно чтобы весь интернет работало от корпоративной сети, а определенные приложения или веб адреса(запросы) исходили с другой интернет подключения.

    Расскажи словами как ты собираешся различать эти приложения?

    Грубо говоря что будет маркером что вот этот торрент клиент должен ходить на такой интерфейс
    а твоя любимая 1С-ка на корпоративный.

    Ответ с виртуалкой написанной выше - это скорее всего правильный ответ но я думаю что не самый лучший
    с точки зрения ресурсов машины. Виртуалка объективно потребляет больше чем на самом деле надо.
    Ответ написан
    Комментировать
  • Нужно ли делать защиту при делении на ноль?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вообще ты сам себе ответил на вопрос
    в разных отраслях для личного пользования.


    Главный пользователь и заказчик - это ты. И когда ты разрабатываешь свою библиотеку векторной алгебры - то пишешь модульные тесты. И тесты, как-бы документируют твою библиотеку и закрывают все вопросы
    с нулями и бесконечностями.

    Какие вообще у тебя варианты по отработке неопределенностей? Я вижу такие.
    1) Возвращать бесконечность +Inf. Это нормально для floating-point. Но влияние результата на стек
    вызовов дальше надо учитывать. Эта бесконечность пойдет в другие формулы порождая новые бесконечности и т.п.

    2) Бросать исключение. Это не в духе С++ и не всегда удобно для выскокой производительности. Но языки высокого уровня этим часто пользуются. Здесь мы предполагаем что такой результат - крайне нежелателен и работа стека расчета векторов будет аварийно прервана.

    3) Возвращать специальный контейнер с результататом (Optional или Either) или пустой контейнер. Это в духе функционального кодинга. Но весь твой стек должен тоже быть адаптированным к таким Optional параметрам результатов.

    И есть еще вариант - просто найти такой базис вычислений в котором нет такой проблемы. Пускай допустим векторы так и остаются основным типом данных но расчеты ты будешь делать в каком-нибудь другом типе где эта операция на уровне математики - безопасна и всегда определена. Грубо говоря как в углах Эйлера. Чтоб не писать всякие проверки условий (if) - можно перейти к кватерниону и там вроде как вращение легче идет.
    Ответ написан
    Комментировать