• Почему не работает python 3.11.1 в cmd?

    @kuza2000
    В свое время AMD опередила Intel с переходом на 64 бита. Теперь эта архитектура называется AMD64, другое название этой архитектуры x86-64. Это одно и то же. Так что все в порядке, у вас 64-битный питон :)
    Ответ написан
    Комментировать
  • Как спарсить криптовалюту на бирже binance?

    @kuza2000
    import live_trading_indicators as lti
    
    indicators = lti.Indicators('binance')
    ohlcv = indicators.OHLCV('btcusdt', '1h', '2022-07-01', '2022-07-02')
    print(ohlcv.pandas())
    Ответ написан
  • Создаю таблицу в sql lite в обычном варианте, и в варианте c WITHOUT ROWID получается огромная разница в размерах. Почему размеры так отличаются?

    @kuza2000 Автор вопроса
    В общем, разобрались.
    Когда размер блоба превышает определенный порог, он переносится на overflow pages. Это отдельная страница или несколько. Больше одного блоба на странице переполнения быть не может. А вот на странице данных (в записях) могут быть много блобов.

    Вот тут, в разделе 1.6 описаны пороги, при превышения которых блоб переносится на страницы переполнения: https://www.sqlite.org/fileformat.html

    Вот главная формула:
    X is U-35 for table btree leaf pages or ((U-12)*64/255)-23 for index pages.

    Тут U - это размер страницы. Размер страницы у меня 4096, получается, порог переноса будет 4096 - 12 = 4084 для листовой страницы и ((4096-12)*64/255)-23 = 1002 для страницы указателей. Это полный размер записи. За вычетом размера блоба остальная часть записи - 5 байт (подглядел в дампе страницы базы). Значит, пороги переноса блоба будут 4079 и 997.

    Провел эксперименты с разным размером блоба. База с WITHOUT ROWID перестает пухнуть при размере блоба 996 байт. А 997 - уже проблема. Вывод: в таблицах с WITHOUT ROWID применяется порог для блобов, который предназначен для страницы индекса.

    Вообще, ничто не мешает хранить блобы большего размера на страницах таблиц с WITHOUT ROWID. Вполне возможно, что это ошибка, которую позже поправят. Но пока в sql lite в таблицах с WITHOUT ROWID блобы лучше не хранить.

    UPD:
    Спросил у на форуме sql lite, ответили разработчики: https://www.sqlite.org/forum/forumpost/ad86fbaa04
    Как справедливо поправили - блобы тут не причем, имеет значение общий размер записи (payload). Ответили, что таблицы WITHOUT ROWID сделаны как покрывающие индексы, и унаследовали соответствующие ограничения. В общем, на мой взгляд, не стоит их использовать, если может произойти spliting. Для этого общий размер записи не должен приближаться к 1/4 размера страницы.
    Ответ написан
    Комментировать
  • Как вывести имя массива?

    @kuza2000
    Во первых, у вас не массив, а список. Массивы в питоне - это тип array, у вас тип list.
    Сам вопрос не понятен. Если где-то на входе (например, процедуры) вы получаете список, то у него нет имени. Вы получаете только ссылку на объект типа list. В процедуре он может хранится в переменной с одним именем, в вызываемом коде - в переменной с другим именем.
    Ответ написан
    Комментировать
  • Есть ли fill factor для sqlite3?

    @kuza2000 Автор вопроса
    Разобрался. Fill Factor мне не нужен. Проблема в другом. Новый вопрос тут: Создаю таблицу в sql lite в обычном варианте, и в ...

    По Fill Factor и почему не нужен.
    В MS SQL по умолчанию Fill Factor = 100%. И используется он только при перестройке индексов и кластеризованных таблиц.

    При заполнении он применяться не может, это невозможно. Страница всегда заполняется до конца, потом делится. Делить страницу раньше бессмысленно. Это не выгодно, никогда.

    В SQL LITE, судя по всему, такой настройки нет. Скорее всего тоже 100% заполняет страницы при перестройке, но я не проверял.
    Ответ написан
    Комментировать
  • Где ошибка в цикле?

    @kuza2000
    years_unique = list(set(data['Year']))

    print(years_unique)
    print(len(years_unique))
    Ответ написан
    Комментировать
  • Как в Python присвоить объекту класс, если имена классов хранятся в списке?

    @kuza2000
    Можно создавать свои классы на лету, используя type. Для этого ее нужно вызвать с тремя параметрами, вместо одного:
    new_class = type('Model1', (), {})
    Теперь в new_class лежит именно класс с именем Model1. После этого создаете объекты класса Model1:
    a_model1 = new_class()
    Я не знаю, как вы используете эти классы, но посмотрите 2-й и 3-й параметр type. Там можно указать родительский класс и инициализировать сразу свойства класса.
    Ответ написан
    Комментировать
  • Реально ли взломать RAR?

    @kuza2000
    Запустил перебор сейчас на своем ноутбуке. Используется GPU, но в ноуте, как понимаете, не особо мощная видюха. GeForce MX150, 1531 MHz, 384 SP cores.

    Перебираю символы английские, большие и маленькие, и цифры, длинна алфавита 62. Скорость перебора составляет около 6000 в секунду.

    Пароли длинной 4 символа перебрались за 40 минут.
    На 5 еще перебираются, расчетное время 42 часа.
    Можно прикинуть на 6, 7, 8 символов:
    6 - 109 дней
    7 - 18 лет
    8 - 1150 лет
    9 - 71 тысяча лет

    На ферме GPU будет, наверное, раз в 100 быстрее. Еще есть суперкомпьютеры. Ну и прогресс не стоит на месте. В общем, оценивайте.
    Для себя сделал вывод, что пароль 8-9 символов (большие, маленькие, цифры и спецсимволы) можно считать для моих целей вполне надежным. Но случайных символов, конечно.

    Все это относится только для rar. Для других архиваторов скорость подбора может сильно отличаться.
    Ответ написан
  • Какие способы создания email на домене, купленном на Namecheap?

    @kuza2000
    Странно, что никто 3 года не ответил на этот вопрос.

    Для домена нужен еще primary dns. С этим никаких проблем нет, я делал на сервере, который у меня лежал дома, в ящике письменного стола :) Все работает.

    А вот с почтой так не получилось. Поднимал почтовый сервер. Прием работал хорошо. А при отправке значительная часть писем не доходила или попадала в спам. Там есть так называемая "проверка обратной зоны". Возможно, не точно вспомнил термин. В общем, там есть проверка, откуда письмо - защита от спамеров. Возможно, это можно как-то победить через провайдера, но мне уже было лень. Так как это был просто спортивный интерес. Для использования почты на своем домене есть более простые пути:

    1. Многие хостеры позволяют поднять у себя почтовый сервер. Многие даже с веб-интерфейсом. Все работает, пробовал. pop3/smtp/imap - просто работает. Веб-интерфейс прост, но беден, по сравнению с привычным яндексом или гуглом.

    2. И яндекс, и гугл позволяют привязать свой домен. Это самый простой путь. Пользуешься привычным интерфейсом, только домен - твой. Как правило, это бесплатно, если немного адресов. Я так пользуюсь сейчас почтой на своем домене на яндексе. Так делают многие, даже крупные организации. Просто и удобно. Домен в любой момент можно отвязать и перекинуть на другой сервер.
    Ответ написан
    Комментировать